- •Шаг 1 Создание проекта
- •Шаг 2 Настройка свойств формы
- •Шаг 3 Размещение компонентов на форме
- •Шаг 4 Настройки свойств компонентов формы
- •Шаг 5 Внешний вид интерфейса при изменении данных
- •Шаг 6 Установка значения компоненты цвета полем редактирования
- •Шаг 7 Кнопка «Выбор цвета»
- •Шаг 8 Событие создания формы
- •Шаг 9 Кнопка «Выход»
- •Шаг 10 Блокировка ввода некорректных символов
- •Шаг 11 Выделение активной рабочей группы
- •Шаг 12 Контекстная (всплывающая) подсказка
Процедуры-обработчики для остальных полей редактирования разрабатываются аналогично.
Шаг 7 Кнопка «Выбор цвета»
Двойным щелчков по кнопке SelectBt добавить процедуру-обра- ботчик события OnClick «Нажатие кнопки», который является основным.
Данная кнопка выводит на экране стандартный диалог выбора цвета и в случае согласия пользователя (нажатие на кнопку «Ok») что определяет положения бегунков соответствующих полос прокрутки.
procedure TSelColMainFm.SelectBtClick(Sender: TObject); begin
ColorDialog.Color := RGB(RTb.Position,GTb.Position,BTb.Position);
//Отображение стандартного диалога выбора цвета if ColorDialog.Execute then begin
//Установка состояния компонентов при выборе цвета через диалог
RTb.Position := GetRValue(ColorDialog.Color);
GTb.Position := GetGValue(ColorDialog.Color);
BTb.Position := GetBValue(ColorDialog.Color); end;
end;
В данной процедуре-обработчике используются функции работы с компонентами цвета RGB:
function GetRValue(RGB: DWORD): Byte; Возвращает значение красной компоненты цвета;
function GetGValue(RGB: DWORD): Byte; Возвращает значение зеленой компоненты цвета;
function GetBValue(RGB: DWORD): Byte; Возвращает значение синей компоненты цвета;
function RGB(r, g, b: Byte): COLORREF; Возвращает суммарный цвет по его составляющим.
Шаг 8 Событие создания формы
С помощью Object Inspector (вкладка Events) добавить форме обработчик события OnCreate «Создание окна».
В процедуре-обработчике устанавливается начальные значения свойства Position для полос прокрутки.
procedure TSelColMainFm.FormCreate(Sender: TObject); begin
// Установка начальных значений ползунков RTb.Position := 128;
GTb.Position := 128;
BTb.Position := 128; end;
Не требуется вызывать процедуру-обработчик, устанавливающий согласованное состояние элементов управления, так как она вызовется автоматически, кроме случая, когда эти значения не изменяется для всех полос прокрутки.
Шаг 9 Кнопка «Выход»
Двойным щелчков по кнопке ExitBt добавить процедуру-обработ- чик события OnClick «Нажатие кнопки», который является основным.
Данная кнопка закрывает главное окно приложения.
procedure TSelColMainFm.ExitBtClick(Sender: TObject); begin
Close;
end;
Развитие функциональности приложения
Шаг 10 Блокировка ввода некорректных символов
С помощью Object Inspector (вкладка Events) добавить одновременно для всех полей редактирования обработчик события OnKeyPress «Ввод символа».
В нем осуществляется перевод фокуса ввода при нажатие на клавишу «Enter» (код символа #13). Блокируются все символы кроме цифр и клавиш управления (Ctrl+C – #3, BackSpace – #8, Ctrl+V – #22, Ctrl+X – #24).
procedure TSelColMainFm.EdKeyPress(Sender: TObject; var Key: Char); begin
if Key = #13 then begin SelectNext(ActiveControl,True,True); Key := #0;
end;
if not (Key in ['0'..'9',#3,#8,#22,#24]) then Key := #0; end;
Шаг 11 Выделение активной рабочей группы
Улучшить интуитивность интерфейса, можно выделив надпись заголовка активной группы (которая в данный момент редактирует значение компоненты цвета) контрастным шрифтом.
Необходимо описать глобальные переменные для сохранения предыдущих характеристик шрифта. Их описание необходимо поместить перед процедурами-обработчиками событий.
implementation {$R *.dfm}
var
OldCol : TColor; OldSttyle : TFontStyles;
Не требуется использовать отдельные переменные для хранения предыдущих значений цвета и стиля шрифта так как обработчик потери фокуса ввода выполняется до того как выполнится обработчик установки фокуса ввода, следующего элемента управления.
Для каждой группы добавить свои процедуры-обработчики событий OnEnter «Получение фокуса ввода» и OnExit «Потеря фокуса ввода».
procedure TSelColMainFm.RedGbEnter(Sender: TObject); begin
//Сохранение предыдущих характеристик шрифта
OldCol := RedGb.Font.Color;
OldSttyle := RedGb.Font.Style;
//Установка новых характеристик шрифта
RedGb.Font.Color := clRed;
RedGb.Font.Style := RedGb.Font.Style + [fsBold]; end;
procedure TSelColMainFm.RedGbExit(Sender: TObject); begin
//Восстановление предыдущих характеристик шрифта
RedGb.Font.Color := OldCol;
RedGb.Font.Style := OldSttyle; end;
Процедуры-обработчики для остальных групп разрабатываются аналогично. Имеет смысл цвет шрифта выделенной группы установить таким же, как цвет редактируемого канала.
Шаг 12 Контекстная (всплывающая) подсказка
Для улучшения интуитивности интерфейса приложения можно для компонентов задать контекстную подсказку. Для этого установить соответствующий текст свойства Hint. Также для формы необходимо выставить свойство
ShowHint = True
В противном случае подсказка не будет отображаться.