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

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

Подскажите поажлуйста, как узнать, создана форма или нет? [D7, WinXP]


Maverick ©   (2004-08-26 21:53:00) 

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


GuAV   (2004-08-28 03:28:00) [1]


> А если попробовать к какому нибудь полю этой формы обратится...
>  Если создана - все хорошо, нет - exception... Отлавливать
> и обрабатывать...

Ловить AV - плохая идея. тем более может ещё "повезёт" и ошибки не будет


3APA3A   (2004-08-28 02:18:00) [2]

А если попробовать к какому нибудь полю этой формы обратится...
 Если создана - все хорошо, нет - exception... Отлавливать и обрабатывать...


Германн   (2004-08-28 02:10:00) [3]

2 calm ©   (27.08.04 11:08) [13]
Имхо, не согласен. :(((
Можно и так и эдак. Кому что нравится. Но к сабжу это уже мало относится.


calm   (2004-08-27 11:08:00) [4]


> Ну, например потому, что ее процедур(а)(ы) умеют правильно
> сконфигурировать внешнее устройство. И при этом, вышеупомянутая,
> предлагает пользователю "удобный" и "понятный" интерфейс!


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


Anatoly Podgoretsky   (2004-08-27 09:48:00) [5]

Есди надо точно, то Screen.Forms, если погадать то можно и другие методы. В какой то мере можно через контролируемые свойства RO с приватным полем/


Германн   (2004-08-27 03:40:00) [6]

2 jack128 ©   (27.08.04 03:15) [10]
>Германн ©   (27.08.04 3:03) [9]
>На первый взгляд кажется, что существование формы не нужно, а >тем не менее в программе существуют ссылки на свойства или >процедуры данной формы.

Это при использований глоб переменных?

Нет. Не только.
Имхо, порой, стоит собрать некие параметры(переменные) в качестве свойств некоей формы. Ну, например потому, что ее процедур(а)(ы) умеют правильно сконфигурировать внешнее устройство. И при этом, вышеупомянутая, предлагает пользователю "удобный" и "понятный" интерфейс!


jack128   (2004-08-27 03:15:00) [7]

Германн ©   (27.08.04 3:03) [9]
На первый взгляд кажется, что существование формы не нужно, а тем не менее в программе существуют ссылки на свойства или процедуры данной формы.


Это при использований глоб переменных? Хе - да ну их нафиг. В приложени должно быть две глобальных переменных - MainForm и MainDataModule , все остальное от лукавого.

Я, конечно, утрируют, но лично у меня автоматом создаются только эти два объекта..


Германн   (2004-08-27 03:03:00) [8]

2Maverick   (26.08.04 22:38) [6]
>если уж на то пошло, еще один вопрос. Если в проекте достаточно >много форм то лучше их создавать по мере необходимости  или все >же создавать все формы при открытии приложения?

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


TUser   (2004-08-26 22:45:00) [9]

2[3]
FreeAndNil надо использовать вместо Free, если предполагается, что объект может создаваться несколько раз, и надо проверять, существует ли он. OnDestroy - я бы не стал.

PS. Диал-ап.


GuAV   (2004-08-26 22:41:00) [10]


> Это когда ?

OnCreate :)
> то лучше их создавать по мере необходимости  или все же
> создавать все формы при открытии приложения?


Maverick   (2004-08-26 22:38:00) [11]

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


Zacho   (2004-08-26 22:32:00) [12]

В общем случае - никак.
Самый, imho, правильный способ - пройтись в цикле по Screen.Forms и поискать её по имени и т.п.

> Гаврила ©   (26.08.04 21:58) [3]
>поясню пост номер 2
> в OnDestroy формы (например она называется Form2)
>написать
> form2 :=nil;

Не стоит так делать. Потенциально чревато ... Например, может быть несколько экземпляров формы. Или вообще не быть глобальной переменной form2. Да и вообще, обращаться в методе класса к глобальной переменной (тем более к указателю на экземляр того же класса) - верный путь к труднообнаруживаемым глюкам, особенно при разработке проекта в команде.

> GuAV ©   (26.08.04 22:12) [4]

В смысле "создается но ещё не создана" ? Это когда ?


GuAV   (2004-08-26 22:12:00) [13]

Вообще-то когда форма создаётся но ещё не создана, переменная обычно уже имеет не-nil значение.


Гаврила   (2004-08-26 21:58:00) [14]

поясню пост номер 2
в OnDestroy формы (например она называется Form2) написать
form2 :=nil;


> TUser ©   (26.08.04 21:55) [2]

Ответ должен быть понятен спрашивающему, а тут явно уровень еще не дотягивает до FreeAndNil


JohnJ   (2004-08-26 21:55:00) [15]

у меня был случай когда Form2 была создана, но закрыта. Не знаю, подойдёт ли тебе этот случай...
Я делал так: if Form2.Visible then {Форма октрыта}
              else {Форма закрыта}


TUser   (2004-08-26 21:55:00) [16]

if Assigned() then ...
См. также FreeAndNil


Наверх

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