Обработчики событий
На вкладке События перечислены все события, которые может обрабатывать форма. Названия их обработчиков в Инспекторе объектов начинаются с букв On (в переводе с англ. — в ответ на...). Чтобы создать обработчик, нужно дважды щёлкнуть мышью на поле справа от его названия. При этом открывается окно редактора и в текст модуля автоматически добавляется пустой обработчик события (шаблон), в который остаётся только добавить нужные команды.
Рассмотрим простой пример. Вы знаете, что многие программы запрашивают подтверждение, когда пользователь завершает их работу. Для этого можно использовать обработчик OnCloseQuery (в переводе с англ. — запрос на закрытие). Обработчик, созданный двойным щелчком мышью, имеет вид:
procedure TForml.FormCloseQuery(Sender: TObject; var CanClose: boolean); begin end;
Одновременно этот метод добавляется в описание класса TForml (выше секции private).
Как видно из заголовка процедуры, в обработчик передаются два параметра:
• Sender — ссылка на объект, от которого пришло сообщение о событии (в данном случае это будет сама форма);
• CanClose — изменяемый логический параметр, в который нужно записать результат запроса: истинное значение означает, что можно закрывать окно, ложное — что нельзя.
В Lazarus есть стандартная функция MessageDlg, которая выводит на экран запрос с несколькими кнопками (рис. 7.15) и позволяет получить ответ пользователя (код нажатой кнопки).
Рис. 7.15
В тело обработчика можно добавить условный оператор, который запишет в переменную CanClose значение True, если пользователь подтвердил выход из программы:
procedure TMainForm.FormCloseQuery(Sender: TObject; var СапС1озе: boolean); var res: TModalResult; begin rеs:=МеssаgеDlg('Подтверждение', 'Вы действительно хотите выйти ив программы?', mtConfirmation, [mbYea,inbNo], 0); CanClose : = (rеs=mrYеs) ; end; ;
Здесь вызывается функция MessageDlg, и её результат записывается в переменную res типа TModalResult. Если это значение совпадает со встроенной константой ,mrYes (т. е. пользователь нажал на кнопку Yes), в переменную CanClose записывается значение True, и программа завершается, иначе команда отменяется. Функции MessageDlg передаются пять параметров:
• заголовок окна;
• текст вопроса;
• тип запроса, определяющий рисунок слева от текста: mtError ошибка;
mtWarning предупреждение;
mtlnformation информация;
mtConf irmation подтверждение;
• набор (множество) кнопок, которые появляются под текстом; в нашем случае это кнопки Yes и No, обозначенные константами mbYes и mbNo;
• номер раздела справочной системы, в котором есть объяснение этой ситуации (у нас нет справочной системы, поэтому ставим 0).
Итак, мы построили простейшую работоспособную программу и познакомились со средой Lazarus. В следующем параграфе вы узнаете, как работать с компонентами.
Следующая страница Вопросы и задания