Советы по Delphi

         

Динамическое создание и циклическое связывание форм


Тема: Динамическое создание и циклическое связывание форм

Как сделать простой метод, переключающий между формами?
Как мне добавить возвращаемые результаты к моей ShowModal-форме?
Как мне создавать экземпляры форм во время выполнения приложения?

Необходимый для осуществления этого метод очень прост. В моем примере я использую 3 формы с именами Mainform, Form1 и Form2. На Mainform я установил кнопку, которая выводит Form1, из нее вы можете вызвать любое количество форм (перемещаться между ними) через соответствующие кнопки, расположенные на этих формах. В моем примере "переключение" происходит между формами Form1 и Form2.

Шаг 1. Разместите следующие две строчки в секции interface той формы, которая у вас будет главной:

    const mrNext = 100; mrPrevious = 101;



Шаг 2. Разместите на главной форме кнопку и добавьте следующий код в обработчик события ее нажатия:

    var MyForm: TForm; R, CurForm: Integer; begin R := 0; CurForm := 1; while R <> mrCancel do begin Case CurForm of 1: MyForm := TForm1.Create(Application); 2: MyForm := TForm2.Create(Application); end; try R := MyForm.ShowModal; finally MyForm.Free; end; case R of MrNext : Inc(CurForm); MrPrevious : Dec(CurForm); end; // эти 2 строчки позволят нам не выходить за границы if CurForm < 1 then CurForm := 2 else if CurForm > 2 then CurForm := 1; end; // while end;

Шаг 3. Добавьте формы 1 и 2 (и любые другие, какие вы хотите иметь) в список используемых модулей формы MainForm.

Шаг 4. В форме Form1 и Form2 добавьте MainForm в список используемых модулей (чтобы они видели константы.)

Шаг 5. На форму Form1, Form2, и все последующие, добавьте 2 TBitBtn'а, с заголовками "Next" и "Previous". In the OnClick Events for these buttons add the following line of code.

Если это кнопка Next, добавьте: ModalResult := mrNext;
Если это кнопка Previous, добавьте: ModalResult := mrPrevious; [001067]



Содержание раздела