![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программное создание формы [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]
> Подскажите пожалуйста, можно ли программно создать форму
> и потом заполнить ее кодом? И если можно, то как?
Создать форму программно можно, а вот про заполнение кодом - непонятно о чем речь. Обработчики что ли назначить событиям?