События делятся на три основные категории: события мыши, события клавиатуры и системные события.
Для формы событие OnClick возникает в том случае, если пользователь нажимает левую кнопку мыши в то время, когда курсор мыши находится на поле формы.
Упражнение 1. Напишите приложение, которое при нажатии левой кнопки мыши перекрашивает форму в синий цвет.
Решение
Создайте обработчик события OnClick: выберите страницу Events инспектора объектов и выполните двойной щелчок мышью в правой колонке, напротив события OnClick. На переднем плане появится окно редактирования модуля с помещенной сразу в нужное место модуля заготовкой обработчика события OnClick.
В обработчике события указан параметр Sender, в котором хранится имя объекта, породившего данное событие (в примере Sender будет содержать ссылку на объект MainF – форму).
Для изменения цвета формы в обработчике события OnClick напишем следующий оператор:
procedure TMainF.FormClick(Sender: TObject);
begin
MainF.Color := clBlue (*)
end;
Поясним оператор (*). MainF – это название объекта формы. Color – это свойство формы. Обращение к свойствам объекта происходит так же, как и в структуре данных записи, через точку.
Запустите приложение. Щелкните левой кнопкой мыши по форме. Убедитесь, что цвет формы стал синим. При повторном щелчке опять возникнет событие OnClick форма снова становится синей, но пользователю это не видно.
Упражнение 2. Напишите приложение, в котором при каждом щелчке левой кнопкой мыши произвольным образом изменяется цвет формы.
Решение
Модифицируем код модуля Main.pas.
Для получения различных цветов для формы воспользуемся функцией RGB. Функция RGB(Red, Green, Blue) принимает три параметра - уровни интенсивности красного, зеленого и синего цвета, соответственно, и возвращает цвет Win32 как целое значение. Для каждого уровня интенсивности существует 256 возможных значений. Например, RGB(255, 0, 0) возвращает цветовое значение для красного цвета, а RGB(255, 0, 255) – сиреневого цвета.
Итак, щелчок левой кнопкой мыши по форме порождает событие OnClick формы, т.е. приводит к обращению к процедуре TMainF.FormClick, в результате чего выполняется оператор (*) – изменение цвета формы на синий. Изменим оператор (*) в соответствии с формулировкой задачи:
procedure TMainF.FormClick(Sender: TObject);
begin
Color := RGB(Random(256), Random(256), Random(256)); (**)
end;
Сравните правые части операторов (*) и (**). Оператор (*) изменяет цвет конкретного объекта типа TMainF (под именем MainF). Оператор (**) позволяет изменить цвет любого объекта типа TMainF, следовательно, этот оператор более общий, и далее будем использовать его при обращении к форме.
Запустите приложение. Убедитесь, что после каждого щелчка по форме левой кнопкой цвет изменяет произвольным образом.
Упражнение 3. Напишите приложение, в котором при нажатии на левую кнопку мыши происходит смена цвета с голубого на синий, и, наоборот, с синего на голубой.
Решение
При щелчке по левой кнопке мыши происходит событие OnClick. В соответствии с условием задачи в обработчике события OnClick формы необходимо проанализировать свойство Color формы: если его значение соответствует синему, то изменить его на голубой (clAqua), иначе присвоить значение clBlue. На языке Object Pascal это записывается так:
procedure TMainF.FormClick(Sender: TObject);
begin
if Color=clBlue then Color:=clAqua else Color:=clBlue;
end;
Сохраните приложение, запустите его. Проверьте выполнение условия задачи.
Упражнение для самостоятельного выполнения. Напишите приложение, в котором при нажатии на левую кнопку мыши происходит поочередная смена трех (по Вашему выбору) цветов.
Сохраните приложение, запустите его. Проверьте выполнение условия задачи.
Содержание отчета
1. Конспект теоретической части
2. Работающие программы на ЭВМ
3. Коды программ с пояснениями в тетради
4. Схема окон приложений
5. Файлы проекта и исполняемые файлы в отдельных папках.
Критерии оценки
Каждое упражнение – по одному баллу (выполненное в соответствии с п .2,3,4 содержания отчета)
Конспект – 1 балл.