Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Проблема типологии научных революций: Глобальные научные революции и типы научной рациональности...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
2017-06-02 | 465 |
5.00
из
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
Так как форма (компонент типа TForm) является базовым интерфейсным элементом для всех программ, создаваемых в среде Delphi, уместно начать знакомство с обработчиками событий с обработчиков, имеющихся у компонента TForm. Таких обработчиков 20: OnActivate, OnClick, OnClose, OnCloseQuery, OnCreate, OnDblClick, OnDeactivate, OnDestroy, OnDragDrop, OnDragOver, OnHide, OnKeyDown, OnKeyPress, OnKeyUp, OnMouseDown, OnMouseMove, OnMouseUp, OnPaint, OnResize и OnShow. Большинство событий и их обработчиков присущи и другим компонентам, поэтому они рассматриваются в следующих разделах. В этом разделе мы остановимся на событиях, характерных непосредственно для формы. Отметим, что эти события носят в большинстве своем нотификационный (уведомляющий) характер и имеют тип TNotifyEvent Type, описанный следующим образом:
TNotifyEvent = procedure (Sender: TObject) of object;
но ряд событий требует передачи дополнительной информации. К таким событиям, обрабатываемым формой, относятся события OnActivate, OnClose и OnCloseQuery. Нотификационные сообщения не несут в себе никакой информации о самом событии, только содержат указатель на источник события — параметр Sender.
Событие OnActivate
Форма получает событие OnActivate при ее активизации. Активизация формы может произойти при получении ею фокуса, например, когда пользователь нажал кнопку мыши в рабочей облас и формы. Для дочерних окон MDI-форм (форм, созданных со значением свойства FormStyle, равным fsMDIChild) событие OnActivate возникает при переключении фокуса на данное окно. Если же происходит переключение фокуса с обычного дочернего окна на MDI-дочернее окно, то это событие получает родительское MDI-okho.
Событие OnActivate имеет тип TActivateEvent, описанный следующим обратом:
TActivateEvent = procedure(Sender: TObject; Activating: Boolean) of object;
Параметр Activating указывает, становится форма активной или нет.
|
Событие OnClose
Событие OnClose наступает при закрытии формы. Форма получает это событие перед закрытием формы, которое может наступить либо при вызове метода Close, либо при выборе команды Close из системного меню.
Событие OnClose имеет тип TCloseEvent, описанный следующим образом:
TCloseEvent = procedure(Sender: TObject; var Action: TCloseAction) of object;
Параметр Action определяет тип закрытия формы и может принимать одно из следующих значений:
Значение | Описание |
caNone | Форму нельзя закрыть |
caHide | Форма на самом деле не закрывается, а становится невидимой |
caFree | Форма закрывается |
Ниже показано, как создать обработчик сообщения OnClose. Из следующего примера видно, как использовать параметр Action для закрытия формы:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{Запросить подтверждение на закрытие}
If MessageDlg(‘Close the form?’,
mtConfirmation.mbOkCancel.O) = mrOk
{Нажата кнопка Ok - закрываем форму}
Then Action:= caFree
{Нажата кнопка Cancel - игнорируем закрытие}
Else Action:= caNone;
end;
Событие OnCloseQuery
С помощью этого события можно разрешить или отменить закрытие формы. Это событие может наступить либо при вызове метода Close, либо при выборе команды Close из системного меню. В обработчике этого события вы изменяете значение параметра CanClose сообщения OnCloseQuery.
Пример закрытия формы с подтверждением в этом случае может выглядеть следующим образом:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
{Запросить подтверждение на закрытие}
If MessageDlg('Close the form?',
mtlnformatlon, [mbOk, mbNo], 0) = mrOk
{Нажата кнопка Ok - закрываем форму}
Then CanClose:= True
{Нажата кнопка No - игнорируем закрытие}
Else CanClose:= False;
end;
Событие OnCloseQuery имеет тип TCIoseQueryEvent, описанный следующим образом:
TCIoseQueryEvent = procedure(Sender: TObject; var CanClose: Boolean) of object;
Событие OnCreate
Это событие возникает при начальном создании формы. В обработчике данного события можно, например, задавать начальные значения свойствам формы и предусматривать другие различные действия, которые должны происходить в момент создания формы. Форма создается при запуске приложения либо при вызове метода Create.
|
Примечание. Не используйте имени компонента типа «форма» (например, Forml) при вызове свойств или методов компонентов, включенных в форму, так как компонент этого типа еще не
существует (находится в процессе создания и инициализации), и обращение к нему вызовет ошибку.
При создании формы события происходят в следующем порядке:
OnCreate
OnActivate
OnPaint
В приведенном ниже примере показано, как задать цвет фона формы, равный системному цвету, определенному в ядре Windows:
procedure TForm1.FormCreate(Sender: TObject);
begin
Color:= clAppWorkSpace;
end;
Событие OnCreate имеет тип TNotifyEvent.
Событие OnDestroy
Событие OnDestroy возникает на финальной стадии закрытия формы и может быть вызвано с помощью методов Destroy или Free либо закрытием главной формы приложения. Это событие имеет тип TNotifyEvent.
Событие OnPaint
Событие OnPaint возникает при необходимости перерисовки содержимого формы. Например, оно может возникнуть при получении формой фокуса. Обработчик этого события может отображать информацию в рабочей области формы. (Более подробно об отображении информации и сообщении OnPaint см. в главе «Графические компоненты и использование графики».) Сообщение OnPaint имеет тип TNotifyEvent.
Событие OnResize
Событие OnResize возникает при изменении размеров формы во время работы приложения. Обработчик этого события необходим только в том случае, если вы планируете выполнять какие-либо действия при изменении размеров формы. Например, это может быть перемещение интерфейсных элементов или какие-либо другие действия. Сообщение OnResize имеет тип TNotifyEvent.
|
|
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!