Помощь - Поиск - Пользователи - Календарь
Полная версия: Динамическое создание формы
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
klem4
Рузультат слудеющих действий будет подходить под критерий "Динамически созданная форма" ?

Создаем стандартное приложение 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
Цитата
Созданная таким образом форма является динамической ?
Она является динамически (а не автоматически) созданной...
hiv
Цитата(klem4 @ 11.11.2006 12:33) *

На соклько я понял надо это делать по другому, все руками.Самому создавать юнит, руками описывать там класс формы, писать какие компоненты будут на форме, в конструкторе класса регестрировать эти компоненты, задвать их свойства...

Почти руками: я этого "руками" не делаю, создаю обычную форму и делаю все как обычно, потом в том unit где твоя форма удаляю строку var Form2: TForm2; , в Project1.dpr удаляю этот юнит из объявления uses и строчку Application.CreateForm(TForm2, Form2);
Вуаля! Все smile.gif
klem4
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;


А он ведь имеено так на лекции объяснял, хорошо что меня там не было smile.gif) Я бы сильно разозлился smile.gif

Я просто не вижу никакого смысла в этом гемморое ... Не дай Бог переделывать рпидется !fire.gif

Malice
Цитата(klem4 @ 21.11.2006 15:43) *

Не дай Бог переделывать рпидется !fire.gif

Мне кажется придется.. Чтобы немного упростить переделку можно сделать "View as text" на форме, там все уже почти красиво.
hiv
Боже!!! mega_chok.gif
Это даже хуже чем я думал!
Вашего препода нада поучить Turbo Pascal for Windows 1.0 (начало 90-х) вместе с Resource Workshop, даже там это проще чем он предлагает sad.gif
Сочувствую...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.