Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3.pdf
Скачиваний:
6
Добавлен:
11.02.2016
Размер:
91.77 Кб
Скачать

Процедуры-обработчики для остальных полей редактирования разрабатываются аналогично.

Шаг 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

В противном случае подсказка не будет отображаться.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]