Тема: Динамическое создание и циклическое связывание форм
Как сделать простой метод, переключающий между формами?
Как мне добавить возвращаемые результаты к моей ShowModal-форме?
Как мне создавать экземпляры форм во время выполнения приложения?
Необходимый для осуществления этого метод очень прост. В моем примере я использую 3 формы с именами Mainform, Form1 и Form2. На Mainform я установил кнопку, которая выводит Form1, из нее вы можете вызвать любое количество форм (перемещаться между ними) через соответствующие кнопки, расположенные на этих формах. В моем примере "переключение" происходит между формами Form1 и Form2.
Шаг 1. Разместите следующие две строчки в секции interface той формы, которая у вас будет главной:
const mrNext = 100; mrPrevious = 101; |
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]