Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
14-1093107849
Knight
2004-08-21 21:04
2004.09.12
Покупка подержанного автомобиля...


1-1093523439
MetalFan
2004-08-26 16:30
2004.09.12
хук WH_KEYBOARD_LL


4-1091120974
DeMus
2004-07-29 21:09
2004.09.12
Как подключить в программе кассовый аппарат


1-1093509981
sashuly
2004-08-26 12:46
2004.09.12
работа со строками


3-1092641231
Ted
2004-08-16 11:27
2004.09.12
самая отказоустойчивая сетевая база





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский