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

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

корректно ли такое динамич создание форм?


Страницы:   1 2

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  будет ссылаться на последнюю.


Страницы:   1 2

Наверх

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