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-24 12:22:00) [1]

Удалено модератором


Плохиш   (2008-08-24 11:02:00) [2]


> boa   (23.08.08 23:38) [22]
> ветка ведь для Начинающих - объясни хоть в нескольких словах,
>  почему в помойкеу?

"Глаза режет", как объяснение пойдёт?


Anatoly Podgoretsky   (2008-08-24 00:26:00) [3]

> Германн  (24.08.2008 0:22:25)  [25]

Ну конечно обычно локальная, смысла в глобальной нет вообще.


Германн   (2008-08-24 00:22:00) [4]


> Anatoly Podgoretsky ©   (24.08.08 00:15) [23]
>
> Можно, если не использовать переменную в дальнейшем, например
> для массового создания форм, где нужна ссылка на форму.

Хм. С третьего раза понял смысл фразы. :(


> Но обычно такое деляют для других компонент.
>

Угу. Я так создаю экземпляры классов TObject для занесения их в TList, юо иначе без переменной это никак не сделаешь. Но в моем случае эта переменная - локальная.


Германн   (2008-08-24 00:16:00) [5]


> boa   (23.08.08 23:38) [22]
>
>
> > Плохиш ©  
>
>
> > Синтаксически - да, логически - в помойку.
>
>
> ветка ведь для Начинающих - объясни хоть в нескольких словах,
>  почему в помойкеу?
> совсем нельзя использовать такой подход или можно, но в
> таких-то случаях?

Тебе мало того, что уже было сказано в этой ветке?
Или хочешь чтобы наш форумский бюргер дал тебе ответ на языке страны местожительства? :)


Anatoly Podgoretsky   (2008-08-24 00:15:00) [6]

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


boa   (2008-08-23 23:38:00) [7]


> Плохиш ©  


> Синтаксически - да, логически - в помойку.


ветка ведь для Начинающих - объясни хоть в нескольких словах, почему в помойкеу?
совсем нельзя использовать такой подход или можно, но в таких-то случаях?


Игорь Шевченко   (2008-08-23 15:02:00) [8]

Leonid Troyanovsky ©   (23.08.08 10:24) [17]


> Непедагогично ;)


Наиболее педагогично - это ремнем по попе :) И приговаривать: "Не используй глобальные переменные всуе"


Плохиш   (2008-08-23 14:47:00) [9]


> корректно ли такое динамич создание форм?
>
> boa   (21.08.08 20:44)

Синтаксически - да, логически - в помойку.


Anatoly Podgoretsky   (2008-08-23 12:47:00) [10]

> Тын-Дын  (23.08.2008 12:45:18)  [18]

Ну вот все трое - Мао, Дже и Дун собрались.


Тын-Дын   (2008-08-23 12:45:00) [11]


> Leonid Troyanovsky ©   (23.08.08 10:24) [17]
>
> > Игорь Шевченко ©   (22.08.08 19:27) [10]
>
> > Leonid Troyanovsky ©   (22.08.08 13:14) [5]
>
> Непедагогично ;)


Великий Мао, здесь не Китай, а форум. Спустись на землю.


Leonid Troyanovsky   (2008-08-23 10:24:00) [12]


> Игорь Шевченко ©   (22.08.08 19:27) [10]

> Leonid Troyanovsky ©   (22.08.08 13:14) [5]

Непедагогично ;)

--
Regards, LVT.


Германн   (2008-08-23 02:03:00) [13]


> ын-Дын ©   (23.08.08 01:56) [15]
>
>
> > Германн ©   (23.08.08 00:49) [14]
> >
> > > Т.е., если я напишу Form.Create, а потом Form.Free,
> > >  то переменная Form обнулится?
> > >
> >
> > Улыбнуло явной глупостью. Только сейчас её заметил.
> > :)
>
>
> Улыбайся. Хорошее настроение - это хорошо.
> Но иногда читай вдумчиво ветку, и цитаты приводи полностью
> - не выжимки.
> Учись понимать, что пишут другие, а не то, что тебе кажется.
>
>

Улыбнулся  ещё раз.


Тын-Дын   (2008-08-23 01:56:00) [14]


> Германн ©   (23.08.08 00:49) [14]
>
> > Т.е., если я напишу Form.Create, а потом Form.Free,
> >  то переменная Form обнулится?
> >
>
> Улыбнуло явной глупостью. Только сейчас её заметил.
> :)


Улыбайся. Хорошее настроение - это хорошо.
Но иногда читай вдумчиво ветку, и цитаты приводи полностью - не выжимки.
Учись понимать, что пишут другие, а не то, что тебе кажется.


> McSimm ©   (23.08.08 00:15) [13]
>
>
> Нет, будет ровно то же, что и при SomeForm: TForm4=nil;


см.

> Тын-Дын ©   (22.08.08 19:09) [8]
> PS.
>
> "Я знаю, что Земля не кругая."


Как же все любят уцепиться за совершенно незначимую в данном случае вещь - код, который подчёркивает необходимость обнулять ссылку на TForm.

------------

В соседней ветке обсуждение развели на сотню постов.
А ведь везде нужна умеренность.
И в каждом конкретном случае решение может быть уникальным, а не "рекомендуемым".
В данном случае это одно из решений. Ничем не хуже других.


Германн   (2008-08-23 00:49:00) [15]


> Т.е., если я напишу Form.Create, а потом Form.Free,
>  то переменная Form обнулится?
>

Улыбнуло явной глупостью. Только сейчас её заметил.
:)


McSimm   (2008-08-23 00:15:00) [16]


>
> > Во-вторых, глобальные переменные и так обнуляются, RTFM.
>
> Неужели? Т.е., если я напишу Form.Create, а потом Form.Free,
>  то переменная Form обнулится?


Нет, будет ровно то же, что и при SomeForm: TForm4=nil;


Юрий Зотов   (2008-08-22 22:46:00) [17]

Опция "Автосоздание форм" у меня отключена по жизни. Поэтому: как правило, первое, что я делаю СРАЗУ после "New Form" - это убиваю такую переменную.

Как правило - но не всегда. Они бывают и полезны. Надо просто понимать, что, зачем и почему ты делаешь. И как это нужно делать, чтобы потом не стало мучительно больно.


Тын-Дын   (2008-08-22 21:16:00) [18]


> С этого момента подробнее, плз, насчет фразы "и так существует"


При создании формы в IDE в модуле описания формы создаётся глобальная переменная. Вот так вот она и существует...


Игорь Шевченко   (2008-08-22 19:27:00) [19]

Leonid Troyanovsky ©   (22.08.08 13:14) [5]


> Во-первых, глобальные переменные MD.


не, они полезны, если их есть в нужное время под нужным соусом.

Тын-Дын ©   (22.08.08 19:09) [7]


> Глобальная переменная для объекта формы и так существует,
>  так какая разница, как она будет писаться?


С этого момента подробнее, плз, насчет фразы "и так существует"


Тын-Дын   (2008-08-22 19:26:00) [20]


> Да, и тема SomeForm.Free - не раскрыта.



> procedure TForm4.FormClose(Sender: TObject; var Action:
> TCloseAction);
> begin
>  Action := caFree;
>  TForm4(pointer(Tag)^) := nil;
> end;


Страницы:   1 2

Наверх

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