Форум: "Основная";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизПодскажите поажлуйста, как узнать, создана форма или нет? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.033 c