Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.12;
Скачать: CL | DM;

Вниз

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

 
Maverick   (2004-08-26 21:53) [0]

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


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

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


 
TUser ©   (2004-08-26 21:55) [2]

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


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

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


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

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


 
GuAV ©   (2004-08-26 22:12) [4]

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


 
Zacho ©   (2004-08-26 22:32) [5]

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

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

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

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

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


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

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


 
GuAV ©   (2004-08-26 22:41) [7]


> Это когда ?

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


 
TUser ©   (2004-08-26 22:45) [8]

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

PS. Диал-ап.


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

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

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


 
jack128 ©   (2004-08-27 03:15) [10]

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


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

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


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

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

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

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


 
Anatoly Podgoretsky ©   (2004-08-27 09:48) [12]

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


 
calm ©   (2004-08-27 11:08) [13]


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


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


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

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


 
3APA3A ©   (2004-08-28 02:18) [15]

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


 
GuAV ©   (2004-08-28 03:28) [16]


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

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



Страницы: 1 вся ветка

Текущий архив: 2004.09.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
1-1093361023
Nat
2004-08-24 19:23
2004.09.12
Click по dbGrid


1-1093508811
nomshar
2004-08-26 12:26
2004.09.12
VMT


9-1084901352
microland
2004-05-18 21:29
2004.09.12
Построение морского боя


1-1093589612
dim-
2004-08-27 10:53
2004.09.12
Почему повторный вызов dll вызывает ошибку?


14-1092761103
KaLLeKa
2004-08-17 20:45
2004.09.12
Подскажите плийз, я в железе ничего не понимаю...