![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите поажлуйста, как узнать, создана форма или нет? [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