![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
корректно ли такое динамич создание форм?
boa © (2008-08-21 20:44:00)есть форма TForm3 (unit3), она содержит некоторые компоненты...
в unit1 я оглавляю unit3,
var
SomeForm: TForm3;
procedure TForm1.Button3Click(Sender: TObject);
begin
inc(b);
SomeForm := Tform3.Create(self);
SomeForm.Button1.caption:=inttostr(b);
SomeForm.Show;
end;
работает, но корректно ли это?
Тын-Дын (2008-08-22 19:09:00) [21]PS.
"Я знаю, что Земля не кругая."
Тын-Дын (2008-08-22 19:09:00) [22]
> Во-первых, глобальные переменные MD.
Глобальная переменная для объекта формы и так существует, так какая разница, как она будет писаться?
> Во-вторых, глобальные переменные и так обнуляются, RTFM.
Неужели? Т.е., если я напишу Form.Create, а потом Form.Free, то переменная Form обнулится?
> Очень трогательно выглядит TForm4().
TObject() будет менее трогательно выглядеть?
Leonid Troyanovsky (2008-08-22 13:24:00) [23]
> Тын-Дын © (21.08.08 21:00) [2]
Да, и тема SomeForm.Free - не раскрыта.
--
Regards, LVT.
Leonid Troyanovsky (2008-08-22 13:14:00) [24]
> Тын-Дын © (21.08.08 21:00) [2]
> var
> Form3: TForm3;
> SomeForm: TForm4=nil;
Во-первых, глобальные переменные MD.
Во-вторых, глобальные переменные и так обнуляются, RTFM.
> TForm4(pointer(Tag)^) := nil;
Очень трогательно выглядит TForm4().
--
Regards, LVT.
Германн (2008-08-22 00:28:00) [25]
> boa (21.08.08 20:44)
Почитай ещё эту статью:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342
Уверен будет полезно и многие дальнейшие вопросы отпадут.
Anatoly Podgoretsky (2008-08-21 22:13:00) [26]> boa (21.08.2008 20:44:00) [0]
Корректно, если только не будешь использовать переменную SomeForm
Тын-Дын (2008-08-21 21:00:00) [27]
> boa (21.08.08 20:44)
var
Form3: TForm3;
SomeForm: TForm4=nil;
procedure TForm3.Button1Click(Sender: TObject);
begin
if not Assigned(SomeForm) then
begin
SomeForm := TForm4.Create(Application);
SomeForm.Tag := integer(Addr(SomeForm));
SomeForm.Show;
end;
end;
procedure TForm4.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
TForm4(pointer(Tag)^) := nil;
end;
stas (2008-08-21 20:49:00) [28]несовсем.
1 раз нажмешь будет 1 форма
2-n разы будет 2-n форм, а SomeForm будет ссылаться на последнюю.