Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 Mб
Скачать

2.2.1.3. События

OnActive‑ активизация окна Sender при получении фокуса.

OnClose‑ непосредственно перед закрытием окна Sender. Параметр‑пе­ре­мен­наяActionзадает режим:caNone(не закрывать окно),caHide(скрыть окно,),caFree(уничтожить окно),caMinimize(свернуть окно). При закрытии (Close)/уничтожении окнаAction=caHide/caFree.

Событие возникает при закрытии окна щелчком по системной кнопке закрытия окна или при вызове метода Close. При закрытии главного окна все остальные окна закрываются без генерации этого события.

OnCloseQuery‑ перед закрытием окна Sender. Обработчик задает парамет­ру‑переменнойCanCloseзначениеTrueпри закрытии окна.

Примерподтверждения закрытия окна:

CanClose:=MessageDlg(‘Закрыть?’,mtConfirmation,[mbYes,mbNo],0)=MrYes

OnCreate‑ при создании окна перед его появлением на экране. Можно, например, установить начальные свойства формы и ее объектов, открыть фай­лы, сформировать значения полей, списков, установить фокус, забло­кировать или разблокировать объекты.

OnDeactivate‑ при потере фокуса.

OnDestroy‑ перед разрушением окна для освобождения ресурсов.

OnHelp‑ при обращении к справочной системе. Если обработчик укажет параметру‑переменнойCallHelp=True, то получение помощи разрешается

OnHide,OnShow‑ момент исчезновения/появления окна.

OnPaint‑ при перерисовке окна, например, при активизации формы, если ее часть была закрыта другими формами.

OnResize‑ при изменении размеров окна. В обработчике можно изменить размеры объектов в окне пропорционально изменениям окна.

При закрытии и уничтожении формы генерируются события в пос­ле­довательности: OnCloseQuery,OnClose,OnDeactivate,OnHide,OnDestroy.

2.2.1.4. Некоторые приемы работы с формами

Если из одной формы (например, Form1) производится вызов методомShowилиShowmodalдругой формы (Form2), то в командеUsesв модуле вызывающей формы (Unit1) нужнодобавить имя подключаемого модулявызываемой формы (UsesUnit2). Обычно при выполнении прило­же­нияDelphiобнаруживает эту ситуацию и выводит диалоговое окна с запросом на подключение модуля. Можно пользователю самому, не дожидаясь запроса, выполнить это командойFile/Uses Unit.

Для закрытия окониспользуются методыHideиClose.

При вызове метода Showвызванноенемодальноеокно появляется на экране и работает вместе с вызывающим окном, и управление передается сразу команде, следующей заShow.

При выполнении метода ShowModalвызванноемодальное(диало­говое) окно (п.2.2.1) появляется на экране, и управление передается команде, следующей заShowModal, только после закрытия модального окна. Перед закрытием модального окна пользователь должен поместить результат ра­бо­ты в свойствоModalResultэтого окна. Некоторые стандартные диало­го­вые окна и кнопки (п.2.3.4.2) сами помещают значения в виде име­но­ван­ных константmr<имя кнопки> (mrYes,mrNo,mrOK,mrCancel,mrNone(ок­­­но не закрывается),mrAbort,mrRetry,mrIgnore,mrAll,mrNoToAll,mYesToAll). МетодCloseвсегда помещает вModalResultзначениеmrCancel.

Примервызова и закрытия модального окнаForm2 из окнаForm1:

Procedure TForm1.Button1Click(Sender: TObject); //вызов окна Form2

Begin Form2.ShowModal; Label1.Caption:=inttostr(Form2.modalresult); End;

Procedure TForm2.Button1Click(Sender: TObject); //закрытие окна Form2

Begin Close; ModalResult:=mrOK; {возврат результата 1 (mrOK)} End;

Существуют два режима создания форм: автоматическийпри старте приложения (существенно замедляет время загрузки приложения и загружает память) идинамическийв процессе выполнения программы.

Эти режимы устанавливаются командой Project/Options/Form. В полеAuto‑Createformsнаходятся автоматически создаваемые формы, а в полеAvailableformпереносятся пользователем динамически создаваемые.

Программно форму можно создать двумя методами: Create (п.2.1.9) иCreateForm (п.2.2.1.2).

Примердинамически создаваемой модальной формыForm3:

Procedure TForm2.Button1Click(Sender: TObject);

Begin If Not Assigned (Form3) Then Form3:=TForm3.Create(Self);//создание

//или If Not Assigned (Form3) Then Application.CreateForm(TForm3,Form3);

Form3.Caption:=’Запрос на продолжение работы’; //заголовокForm3

Form3.Icon.LoadFromFile(‘Car.ico’); //загрузка иконки

If Form3.ShowModal=mrCancel Then Form1.Show;{возвращение}End;