Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программное создание формы [D5, D6, Win95/98, Win2k]


dmtr ©   (2002-08-15 11:25:00) 

Подскажите пожалуйста, можно ли программно создать форму и потом заполнить ее кодом? И если можно, то как?


-peter-   (2002-08-15 12:34:00) [1]

А обработчики хочеш тоже в рантайме создавать ???


Виктор Щербаков   (2002-08-15 12:34:00) [2]


> и обработчики должны быть свои, заново созданные, а
> не копированные с других форм.

В любом случае код для обработки событий форм и их компонентов придется писать в дизайне.
Обработчики событий должны быть методами объекта. В этом их основное отличие от простых функций. А вот какого объекта - это уже не так важно. Можешь создать свой специально для этих целей.


dmtr   (2002-08-15 12:18:00) [3]


> Виктор Щербаков ©

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


Виктор Щербаков   (2002-08-15 12:10:00) [4]

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

Если нужно поменять какой-либо обработчик в рантайме, то тоже не вижу никаких проблем.
Например:
with TForm.Create(nil) do
begin
left:=10;
top:=10;
name:="MyForm";
caption:="MyForm";
OnClose := Form2.OnClose;show;
update;
end;


dmtr   (2002-08-15 12:05:00) [5]


> Если хочешь видеть форму при следующем запуске, то нужно
> сохранять состояние программы (количество форм, их расположение
> и т.п.), а при старте восстанавливать его, т.е. создавать
> формы.

Ну, а как на счет обработчиков внутри форм?


Виктор Щербаков   (2002-08-15 11:59:00) [6]


> кодом сгенерированным VCL.

...сгенерированным IDEхотел сказать :)


dmtr   (2002-08-15 11:58:00) [7]


> lenin ©

Но время ее жизни - до конца работы приложения. А надо, чтобы она стала частьью EXE-шника, чтоли.


Виктор Щербаков   (2002-08-15 11:58:00) [8]


> да и так, чтобы она была и при следующем запуске приложения.
>

Все формы создаются программно. Вопрос в том, твоим кодом или кодом сгенерированным VCL.

Если хочешь видеть форму при следующем запуске, то нужно сохранять состояние программы (количество форм, их расположение и т.п.), а при старте восстанавливать его, т.е. создавать формы.


lenin   (2002-08-15 11:53:00) [9]

Можно:
with TForm.Create(nil) do
begin
left:=10;
top:=10;
name:="MyForm";
caption:="MyForm";
show;
update;
end;


dmtr   (2002-08-15 11:49:00) [10]


> Обработчики что ли назначить событиям?

В принципе - да. Но для начала просто создать форму, да и так, чтобы она была и при следующем запуске приложения.


gek   (2002-08-15 11:41:00) [11]

Заполнить компонентами что ли?


Виктор Щербаков   (2002-08-15 11:40:00) [12]


> Подскажите пожалуйста, можно ли программно создать форму
> и потом заполнить ее кодом? И если можно, то как?

Создать форму программно можно, а вот про заполнение кодом - непонятно о чем речь. Обработчики что ли назначить событиям?


Наверх

Титульная страница Поиск, карта сайта Написать письмо