Использование форм в Delphi (Продолжение)

 В приложениях, разработанных для Windows, для взаимодействия с пользователем очень часто используются диалоговые окна. Вы можете не только применять обычные диалоговые окна, но и создавать свои собственные окна. Обычные диалоговые окна будут рассмотрены далее в этой книге.

Диалоговое окно представляет собой не что иное, как специальную форму. Если вы хотите иметь диалоговое окно, размеры которого нельзя будет изменить, и которое не имеет пиктограммы в строке заголовка (рис. 12.20). вам достаточно будет присвоить свойству BorderStyle значение bsDialog.

Рис. 12.20. Диалоговое окно bsDialog 

 

Чтобы создать диалоговое окно (такое, например, как диалоговое окно Project Options), размеры которого можно будет изменять, или которое будет иметь пиктограмму в строке заголовка, выполните следующие действия:

  1. Присвойте свойству biSystemMenu группы Borderlcons значение True.
  2. Присвойте свойству BorderStyle значение bsSizeable или bsSingle.
  3. При желании можете присвоить свойству Position значение poScreen-Center, чтобы расположить форму в центре экрана.

Диалоговые окна обычно являются модальными формами, используемыми для получения дополнительной информации от пользователя. Диалоговые окна должны содержать как минимум две кнопки: ОК и Cancel (Отмена). Кнопка ОК используется для подтверждения завершения работы в диалоговом окне, а кнопка Cancel служит для отмены действий, выполненных в диалоговом окне. Действие обеих кнопок приводит к закрытию окна.

Теперь давайте создадим диалоговое окно, которое позволит пользователю изменять цвет главной формы. Добавьте компонент TLabel и два компонента TButton. и измените их примерно так. как показано на рис. 12.21.

Рис. 12.21. Простое диалоговое окно 

 

Нам необходимо изменить свойство ModalResult кнопок ОК и Cancel. Присвойте свойству ModalResult кнопки ОК значение гглгОК, а свойству ModalResult кнопки Cancel — значение mrCancel. Свойство ModalResult позволяет сделать одновременно две вещи: закрыть диалоговое окно и уведомить вызывающий объект о том. что пользователь выбрал ОК. Cancel или что-то еще. Когда пользователь щелкает на кнопке с модифицированным свойством ModalResult. то значение этого свойства будет автоматически присвоено свойству ModalResult диалогового окна. Поэтому, чтобы узнать, на какой кнопке щелкнул пользователь, мы должны проверить свойство ModalResult диалогового окна.

Код в листинге 12.19 показывает, как с помощью диалогового окна разрешить пользователю изменять цвет главной формы. 

Листинг 12.19. Использование специального диалогового окна

 

1.procedure TForm1.ButtonlClick(Sender: TObject); begin
2.Form2.ShowModal;
3.if Form2.ModalResult = mrOK then begin
4.Caption := 'User selected OK.'; Color :a clWhite;
5.end;
6.end;

 

Чтобы быть технически грамотными и профессиональными, мы должны сделать две вещи. Во-первых, мы должны разрешить пользователю отменять действия диалогового окна с помощью клавиши и подтверждать их с помощью клавиши . Затем мы должны удалить диалоговое окно из списка автоматически создаваемых окон и создавать его динамически по мере необходимости.

Чтобы сгенерировать событие onclick кнопки Cancel во время нажатия пользователем клавиши на клавиатуре, необходимо присвоить свойству Cancel кнопки значение True. Чтобы сгенерировать событие onclick кнопки ОК во время нажатия пользователем клавиши на клавиатуре, следует присвоить свойству Default кнопки значение True. Вот теперь все готово (рис. 12.22)!

Листинг 12.20. Динамически создаваемое диалоговое окно

 

1.procedure TForml.ButtonlClick(Sender: TObject); begin
2.Form2 := TForm2.Create(Self); Form2.ShowModal;
3.if Form2.ModalResult = mrOK then begin
4.Caption       'User selected OK.'; Color :« clWhite; end;
5.Form2.Free; end;

 

Рис. 12.22. Готовое приложение 

 

 

Экранная заставка — это форма, которая отображается во время запуска приложения. Обычно она отображается тогда, когда приложение занято созданием остальных форм. Как правило, заставка отображает название компании, ее логотип, а также наименование и версию приложения.
С технической точки зрения заставка в небольших приложениях вообще не нужна, поскольку такие приложения загружаются, как правило, очень быстро. Заставки используются в более сложных приложениях для того, чтобы пользователь не начал считать количество секунд (а так и есть на самом деле), потраченных на загрузку всего приложения.
Первое, что потребуется сделать — это добавить новую форму в проект, присвоить ей имя SplashForm и удалить ее из списка автоматически создаваемых форм.
Заставки обычно не имеют никаких границ и располагаются в центре экрана. Поэтому мы присвоим свойству BorderStyle значение bsNone. а свойству Position — значение poScreenCenter.
Листинг 12.21А. Создание заставки
01.program Projectl;
02.uses Forms,
03.Uniti in 'Uniti.pas'   {Formi),
04.Unit2 in ,Unit2.pas'   {SplashForm};
05.{SR *.res)
06.begin
07.Application.Initialize;
08.{ Создание и отображение заставки }
09.SplashForm      TSplashForm.Create(Application);
10.SplashForm.Show;
11.SplashForm.Update;
12.Application.CreateForm(TForml, Formi);
13.{ Уничтожение заставки } SplashForm.Free; Application.Run; end.
Как видите, заставка представляет собой немодальную форму. Если вы отобразите заставку как модальную форму, приложение не запустится, пока вы не закроете ее. Отображение заставки осуществляется с помощью двух методов: Show и Update. В данном случае форму отображает метод Update — он заставляет форму отображать саму себя.
Поскольку в этом примере автоматически создается только главная форма, заставка будет отображаться в течение короткого промежутка времени. Чтобы посмотреть заставку чуть дольше, вы должны приостановить работу приложения на секунду или более, вызвав процедуру Sleep. Она объявлена в модуле Windows и принимает одно целочисленное значение: количество миллисекунд, в течение которых приложение будет оставаться неактивным. Вызывать процедуру Sleep необходимо до демонстрации заставки. Результирующая заставка показана на рис. 12.23.
Листинг 12.22. Отображение заставки
01.program Project1; uses
02.{ Процедура Sleep объявлена в модуле Windows )
03.Forms, Windows,
04.Unit1 in 'Uniti.pas'  (Form1),
05.Unit2 in 'Unit2.pas'  (SplashForm);
06.begin
07.Application.Initialize;
08.{ Создание и отображение заставки }
09.SplashForm := TSplashForm.Create(Application);
10.SplashForm.Show;
11.SplashForm.Update;
12.Application . CreateForm (TForml, Form],);
13.{ Уничтожение заставки с 2-х секундной задержкой.  ) Sleep(2000); SplashForm.Free; Application.Run; end.
Рис. 12.23. Заставка 

 

������� ������ ��� dle ������� ��������� ������

Помоги проекту! Расскажи друзьям об этом сайте: