-
Диалоговые окна
Скорей всего в вашем приложении будет не одно диалоговое окно. Давайте посмотрим, как добавить в программу еще одно диалоговое окно, которое будет появляться при выборе соответствующего пункта меню. В появившемся диалоговом окне мы зададим некоторые параметры, которые передадутся затем в главное окно нашего приложения.
Создайте новый проект, добавьте на форму компонент MainMenu, в редакторе меню добавьте пункт меню Tools и подпункт для него Options. Для меню Options создайте обработчик. Для добавления еще одного окна в программу нажмите на кнопку New Form на панели инструментов View (четвертая кнопка слева):
Появится форма с именем Form2 по умолчанию.
Теперь добавьте в новую форму Edit и две кнопки и задайте для кнопок надписи OK и Cancel. В обработчики для этих кнопок добавьте следующий код:
procedure TForm2.Button1Click(Sender: TObject);
begin
Close;
ModalResult:=mrOK;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Close;
ModalResult:=mrCancel;
end;
Здесь - Close закрывает форму, а в ModalResult записывается результат (mrOK для кнопки OK и mrCancel для кнопки Cancel).
Теперь возвращаемся к коду основной формы.
Пишем для обработчика нашего меню следующий код:
procedure TForm1.Options1Click(Sender: TObject);
var
res : TModalResult;
begin
res := Form2.ShowModal;
if res=mrOK then //Если нажата кнопка OK
Form1.Caption:=Form2.Edit1.Text;
end;
Смысл этого кода следующий: переменная res служит для сохранения результата выполнения второго диалога (т. е. нажал ли пользователь OK или Cancel). И если пользователь нажал OK, то введенную пользователем строку мы показываем в заголовке нашего основного окна.
Теперь остается еще одна проблема. Дело в том, что мы в нашем основном окне (Form1) используем Form2. Но Form2 пока не видна. Для исправления этого добавьте в код Form1 ссылку на Form2:
...
implementation
uses
Unit2;
Все! Теперь можно запускать программу и передавать данные из второго диалогового окна в заголовок первого.
Для создания заставок тоже используют дополнительное окно, но оно должно быть загружено и затем освобождено из памяти, чтобы не мешать дальнейшей работе программы. Это делается в программе проекта. Например, есть форма заставки fmZastavka и модуль к ней zastavka.pas и основная форма fmMain и модуль к ней main.pas. Тогда файл проекта (пункт меню Project\View Source) можно представить в виде:
Program Project1;
uses
Forms,
main in 'main.pas' {fmMain},
zastavka in ‘zastavka.pas’ (fmZastavka);
{$R *.res}
begin
Application.Initialize;
fmZastavka:=TfmZastavka.Create(Application);
fmZastavka.Show; FmZastavka.Update;
Application.CreateForm(TFmMain, FmMain);
fmZastavka.Hide; fmZastavka.Free;
Application.Run;
end.
Для формы fmMain задать обработчик события OnCreate и прописать задержку появления на несколько секунд (установить цикл по времени)
Var t:longint;
Begin
T:=GetTickCount div 1000;
While (GetTickCount div 1000)<t+5 do;
End;
Если заставка выполнена как информационное окно fmInfo с выводом кнопки Ок, то можно использовать вывод окна в модальном режиме:
Program Project1;
uses
Forms,
main in 'main.pas' {fmMain},
info in ‘info.pas’ (fmInfo);
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TFmMain, FmMain);
Application.CreateForm(TFmInfo, FmInfo);
fmInfo.ShowModal; fmInfo.Free;
Application.Run;
end.