23.28K
Категория: ПрограммированиеПрограммирование

События компонентов (элементов управления), их сущность и назначение

1.

Тема: События компонентов (элементов управления), их сущность и назначение
План лекции:
1.Типы событий компонентов.
2.События мыши
3. События клавиатуры
4. Системные события
1.Типы событий компонентов.
Все события условно можно разделить на три категории: события мыши, события клавиатуры и
системные события.
После того как программа для Windows загрузилась в память и выполнила некий код инициализации,
она ничего не делает. Здесь нет «следующего шага». Ничего не происходит, пока не возникнет
некоторое событие (event) — только в этом случае будет реакция программы. Вместо списка команд она
содержит набор алгоритмов, определяющих ее действия для различных событий.
В Delphi эти планы носят название обработчиков событий (event handlers) и призваны реагировать на
множество различных событий.
2.События мыши
1 OnClik — отвечает событие, которое происходит при одном нажатии левой кнопки мыши.
Событие OnClick является самым популярным событием мыши. Для компонента событие OnClick будет
иметь место при освобождении левой кнопки мыши, когда указатель находится над компонентом.
Кроме того, многим компонентам при их активизации с клавиатуры Delphi также сообщает о событии
OnClick.
2 OnDblClik — отвечает за двойное нажатие левой кнопки мыши.
3. OnMouseUp — отвечает за одно нажатие левой кнопки мыши. Можно также использовать это
событие вместо OnClick, если необходимо отличить действительный щелчок мышью от нажатия
клавиши мнемонического доступа.
4. OnMouseDown — событие происходящее при освобождении левой кнопки мыши.
5. OnDragOver — событие компонента имеет место, когда пользователь перетаскивает над ним
другой компонент. Обычно это событие устанавливает свойство Accept в True или False, указывающее,
можно ли на данный компонент опустить перетаскиваемый объект. С другой стороны, перетаскиваемый
компонент обрабатывает и генерирует событие OnStartDrag в начале операции перетаскивания.
Подобно этому перетаскиваемый компонент обрабатывает и генерирует событие OnEndDrag,
независимо от того, был опущен компонент или нет.
6. OnDragDrop — Событие компонента генерируется, когда пользователь опускает на него
другой компонент.
Итак, OnEndDrag и OnStartDrag — это события, предназначенные для перетаскиваемого
компонента. Событие OnStartDrag генерируется в момент начала операции перетаскивания, а
OnEndDrag — в момент ее окончания, независимо от того, был один компонент опущен на другой или
нет. События OnDragOver и OnDragDrop предназначены для компонента, на который опускается другой
компонент. Эти события предназначены для реализации технологии перетащить и опустить (drag and
drool, применяемой во всех современных программах.
3. События клавиатуры
1.OnKeyDown — обработка сообытия, происходящая при нажатии клавиши.
2.OnKeyUp — обработка сообытия, происходящая при отпускании клавиши.
3 OnKeyPress — обработка сообытия, происходящая при нажатии клавиши.
Чем данное событие отличается от OnKeyDown ши OnKeyUp? OnKeyPress срабатывает после
нажатия клавиши, и система идентифицирует ее как клавишу с простым символом, например <А> или

2.

<!>, а не как клавишу управления курсором, функциональную клавишу, комбинацию <Аlt+клавиша> и
т.д.
Пример: If UpCase(Key) =’Q’ THEN Close (Если нажать клавишу <Q>, программа завершит
работу)
Функция UpCase встроена в Delphi. При передаче ей буквы алфавита она возвращает эту букву
как прописную. При передаче любого другого символа функции возвращает символ без изменения.
4. Системные события
События мыши и клавиатуры вызываются воздействиями пользователя на программу.
Системные события исходят непосредственно от Windows, поэтому их использование не так очевидно.
Таблица: Основные системные события
Событие
Ситуация
Реакция пользователя
OnActive
Форма только что стала активным окном
программы
Обновление любой информации, отображенной
в форме
OnClose
Имело место событие OnCloseQuery,
результате форма закрывается
Последняя
формы
OnCloseQuery
Windows запрашивает форму, не намерена ли
она закрыться
Пользователю предлагается сохранить
изменения данных или отменить закрытие
OnCreate
Создание формы
Выполнение необходимой инициализации
OnDeactivate
Форма только что перестала быть активным
окном программы
Отмена всех действий, выполняемых
обработчике события OnActivate
OnDestroy
Форма готова исчезнуть навсегда
Очистка всех ресурсов, выделенных программой
OnPaint
Форму необходимо отобразить заново, так
как она, например, была только что открыта
или восстановлена из пиктограммы
Рисование линии или простейшей графической
фигуры непосредственно в форме
OnResize
Размеры формы были изменены
Приведение
в
порядок
размеров
или
расположения компонентов после изменения
размеров формы
в
возможность
отменить
закрытие
все
Многие программы Windows способны пресечь попытку пользователя прекратить их работу,
задав вопрос, уверен ли он, что это именно то, что ему нужно. Программы Delphi могут запрашивать
такое подтверждение из обработчика события OnCloseQuery.
Вставьте в обработчик события OnCloseQuery новой формы следующие строки:
CanClose := MessageDIg (‘Are you sure?’, mtConfirmation, [mbYes, mbNo], 0) = IDYES
При попытки закрыть форму появится диалоговое окно с сообщением, как на, требующее вашего
подтверждения. Если ответить No, программа не прекратит работу.
Пример1: Написать программу, которая при очередном щелчке по форме левой кнопкой мыши будет
менять форму курсора, используя по порядку все формы курсора от crDefault до crVSplit
Решение:
1) Создать новый проект
2) В обработчик события OnClick формы Form1 ввести следующий код
If cursor=crDefault then
cursor:=crVSplit
else
cursor:=succ(cursor);
в

3.

3) Откомпилировать программу
4) Проверить работу программы
5) Сохранить программу в рабочей папке
Пояснение: Если при щелчке по форме курсор мыши имеет обычную форму (crDefault), то ему
присваивается форма crVSplit, которая является самой последней формой курсора в списке значений
свойства cursor. Если при щелчке по форме курсор мыши имеет форму отличную от crDefault, то
применяется встроенная функция succ, которая возвращает следующую форму курсора. Оператор “=”
проверяет равенство левой и правой частей условия.
Пример2: Написать программу, которая будет перемещать форму по экрану вправо и влево с помощью
соответствующих клавиш управления курсором.
Решение:
1) Создать новый проект
2) В обработчик события OnKeyDown формы Form1 ввести следующий код:
if key=vk_left then left:=left-80;
if key=vk_right then left:=left+80;
3) Откомпилировать программу
4) Проверить работу программы
5) Сохранить программу в рабочей папке
Пояснение: vk_left-обозначение клавиши , vk_right-обозначение клавиши .
Контрольные вопросы:
1.Что такое компоненты?
2.Где находятся компоненты в Delphi?
3.Расскажите о категориях событий.
English     Русский Правила