procedure TFormI.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:= MessageDIg('Close form?', mtConfirmation,
[mbYes,mbNo], 0) = mrYes;
end;
2. OnClose генерируется непосредственно перед закрытием формы. Обычно оно используется для изменения стандартного поведения формы при закрытии. Для этого Delphi передает в обработчик события переменную Action, которая может принимать одно из четырех значений: caHide, caMinimize, caNone или caFree. По умолчанию для не MDI-форм используется caHide, скрывающее форму. Для дочерних MDI-форм значение по умолчанию, сворачивающее форму, равно caMinimize. Если Action установлено равным caNone, закрытия не происходит. caFree заставляет Delphi закрыть форму и освободить всю связанную с ней память. Если после этого сослаться на объект формы, произойдет исключительная ситуация.
Совет:onclose вызывается только при закрытии формы с помощью щелчка на кнопке закрытия или вызова функции Close. Если вы закрываете главную форму приложения, все другие открытые формы закрываются без вызова события OnClose. Событие OnCloseQuery вызывается всегда, независимо от способа закрытия формы.
3. OnDeActivate происходит при потере формой фокуса ввода. Запуск происходит по тем же правилам, что и запуск события OnActivate.
4. OnHide запускается непосредственно перед тем, как форма станет невидимой.
Совет:Хотя при вызове onhide форма еще видна, ее свойство Visible установлено равным False.
5. OnDestroy генерируется непосредственно перед уничтожением формы. Обычно оно используется для освобождения ресурсов, выделенных в OnCreate.
Совет:Событие ondestroy вызывается только один раз за все время существования формы, прочие события могут вызываться неоднократно.
Повторное использование форм
К этому моменту вы уже должны быть хорошо знакомы с объектно-ориентированной природой Delphi. Поскольку TForm представляет собой класс, он может повторно использоваться, расширяться и изменяться. Повторное применение форм поддерживается через шаблоны форм и наследование. Оба эти метода используют Object Repository
Шаблоны форм
Шаблоны форм (Form Templates) предоставляют основу для новой формы. По одной заготовке можно создать несколько форм. В Delphi есть хранилище объектов (Object Repository), в котором содержится множество различных шаблонов форм, диалогов и проектов.
Использование шаблонов форм
Приведенные ниже опции позволяют использовать шаблоны форм.
Copy.Эта опция добавляет копию шаблона формы в ваш проект. Изменения объекта в проекте не влияют на другие объекты.
Use.Эта опция связывает шаблон непосредственно с вашим проектом. Изменения в проекте воздействуют на объект, находящийся в хранилище, и наоборот. Для иллюстрации сказанного добавим в проект новую форму, основанную на шаблоне About box, следующим образом.
Выберите команду File/New Application. Появится пустое приложение.
Выберите команду File/New. Появится диалоговое окно New Items.
Щелкните на вкладке Forms вверху диалогового окна. Delphi выведет доступные шаблоны форм, как показано на рис. 1.6.
Убедитесь, что выбран метод Copy или Use.
Щелкните на кнопке ОК. Новая форма About box будет добавлена в ваш проект. Если вы выбрали опцию Copy, новая форма будет дубликатом шаблона и дальнейшая работа с ней не отразится на шаблоне-оригинале. При использовании Use все изменения в одном проекте через хранилище форм будут переданы во все проекты, применяющие эту форму с опцией Use.
Добавление собственного шаблона
Хотя имеющиеся шаблоны весьма полезны и хорошо сделаны, для продолжительной профессиональной работы их будет недостаточно. Наверняка нужно будет что-либо доработать или создать новую форму, которую можно было бы использовать в других приложениях. Чтобы не делать одну и ту же работу дважды (трижды, восемьюжды…), создайте шаблон формы и поместите его в хранилище объектов.
Создайте форму, добавьте в нее компоненты и приправьте все это кодом по вашему вкусу. Конечно, вы вполне можете использовать в качестве заготовки имеющийся шаблон.
Сохраните форму в папке OBJREPOS Delphi. Совет:object repository не хранит копий всех шаблонов, а устанавливает связи с их DFM— и PAS-файлами. Если вы удалите такой файл, шаблон станет недееспособным.
Щелкните правой кнопкой мыши на форме и затем выберите команду Add to Repository. При этом Delphi выведет диалоговое окно Add To Repository, показанное на рис. 1.7.
Рис. 1.6.Шаблоны форм позволяют использовать заготовленные общие формы
Читать дальше