Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа3.doc
Скачиваний:
4
Добавлен:
06.11.2018
Размер:
281.09 Кб
Скачать
    1. Диалоговые окна

Скорей всего в вашем приложении будет не одно диалоговое окно. Давайте посмотрим, как добавить в программу еще одно диалоговое окно, которое будет появляться при выборе соответствующего пункта меню. В появившемся диалоговом окне мы зададим некоторые параметры, которые передадутся затем в главное окно нашего приложения.

Создайте новый проект, добавьте на форму компонент 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.