Форум «Всё о Паскале» _ Делфи _ Динамическое создание формы
Автор: klem4 11.11.2006 16:33
Рузультат слудеющих действий будет подходить под критерий "Динамически созданная форма" ?
Создаем стандартное приложение Delphi. Имеем Form1 in Utin1.pas. Добваляем к проекту еще одну форму (Form2 in Unit2.pas) На вторую форму кидам с панелей всякую всячину (лейблы, эдиты, стринггриды итд)
Из Project1.dpr удаляем
Application.CreateForm(TForm2, Form2);
На Form1 кидаем кнопку, в обработчике нажатия на которую пишем следующее:
procedure TForm1.Button1Click(Sender: TObject); var Form2: TForm2; begin Form2 := TForm2.Create(Application); Form2.ShowModal; end;
Созданная таким образом форма является динамической ? Почему меня интересует этот вопрос. На соклько я понял надо это делать по другому, все руками.Самому создавать юнит, руками описывать там класс формы, писать какие компоненты будут на форме, в конструкторе класса регестрировать эти компоненты, задвать их свойства...
Автор: volvo 11.11.2006 16:39
Цитата
Созданная таким образом форма является динамической ?
Она является динамически (а не автоматически) созданной...
Автор: hiv 21.11.2006 17:39
Цитата(klem4 @ 11.11.2006 12:33)
На соклько я понял надо это делать по другому, все руками.Самому создавать юнит, руками описывать там класс формы, писать какие компоненты будут на форме, в конструкторе класса регестрировать эти компоненты, задвать их свойства...
Почти руками: я этого "руками" не делаю, создаю обычную форму и делаю все как обычно, потом в том unit где твоя форма удаляю строку var Form2: TForm2; , в Project1.dpr удаляю этот юнит из объявления uses и строчку Application.CreateForm(TForm2, Form2); Вуаля! Все
Автор: klem4 21.11.2006 19:43
hiv, я так и делаю, только боюсь как бы препод не начал возмущаться, а программа не маленькая и форм много (приложение для работы с БД) и везде все писать вручную типа
var f: TForm; Panel1, ... Panel5: TPalen; StrGrdStore: TDBGrid;
...
begin F := TForm.Create(Application); wirh F do begin Top := 10; //... Panel1 := TPanel.Create(f); with Panel1 do begin Parent := F; // ... всякие настройки end; end; ... end;
А он ведь имеено так на лекции объяснял, хорошо что меня там не было ) Я бы сильно разозлился
Я просто не вижу никакого смысла в этом гемморое ... Не дай Бог переделывать рпидется
Автор: Malice 21.11.2006 19:53
Цитата(klem4 @ 21.11.2006 15:43)
Не дай Бог переделывать рпидется
Мне кажется придется.. Чтобы немного упростить переделку можно сделать "View as text" на форме, там все уже почти красиво.
Автор: hiv 21.11.2006 19:54
Боже!!! Это даже хуже чем я думал! Вашего препода нада поучить Turbo Pascal for Windows 1.0 (начало 90-х) вместе с Resource Workshop, даже там это проще чем он предлагает Сочувствую...