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

Вниз

Как узнать: была ли уже создана форма или нет ?   Найти похожие ветки 

 
eruc ©   (2002-09-07 15:12) [0]

Как узнать: была ли уже создана форма или нет ?


 
Grande ©   (2002-09-07 15:16) [1]

А ты создаёшь её в своём приложении?


 
eruc ©   (2002-09-07 15:18) [2]

да


 
eruc ©   (2002-09-07 15:19) [3]

т.е. нужно знать : существует ли данная форма или нет


 
eruc ©   (2002-09-07 15:20) [4]

в данный момент


 
Grande ©   (2002-09-07 15:23) [5]

ЭлементарЭлемОбработчик события формы OnCreat (OnActivate), далее что-нибудь типа ShowMessage("Приплыли...");
That"s all!


 
Grande ©   (2002-09-07 15:24) [6]

Элементарно: Обработчик события формы OnCreat (OnActivate), далее что-нибудь типа ShowMessage("Приплыли...");
That"s all!



 
eruc ©   (2002-09-07 15:49) [7]

а чего нибудь такого нету (КАКОЙ нибудь ФУНКЦИИ):

EXIST(Form1)

чтобы возвращала
true OR fALSE


 
Grande ©   (2002-09-07 16:13) [8]

Слушай, а в чём, собственно, проблема?


 
Anatoly Podgoretsky ©   (2002-09-07 16:37) [9]

Объект Screen свойство Forms содержит полный список всех твоих созданных форм


 
Anatoly Podgoretsky ©   (2002-09-07 16:40) [10]

Ой ответ мой не совсем верный, она не позволяет узнать была ли, а только существует ли в данный момент


 
Просто прохожий   (2002-09-07 20:45) [11]

Assigned(MyForm) = True, если форма MyForm создана.


 
Kopetr ©   (2002-09-07 20:53) [12]

>> Просто прохожий:
Если форма создана, а потом уничтожена (Form.Free), то
Assigned(Form) все равно будет = True, хотя формы-то уже и нет.


 
Юрий Зотов ©   (2002-09-07 20:58) [13]

OnCreate:
if Form1 = nil then Form1 := Self;

OnDestroy:
if Form1 = Self then Form1 := nil;

Проверка:
if Form1 <> nil then ... // форма существует



 
Просто прохожий   (2002-09-07 21:03) [14]

> Kopetr (07.09.02 20:53)
Тогда можно после каждого уничтожения присваивать MyForm := nil


 
Kopetr ©   (2002-09-07 21:12) [15]

>> Просто прохожий:
Тогда проще FreeAndNil(..)


 
Kopetr ©   (2002-09-07 21:27) [16]

>> Юрий Зотов:
А зачем
OnCreate:
if Form1 = nil then Form1 := Self;
?




 
Юрий Зотов ©   (2002-09-07 21:30) [17]

> Kopetr © (07.09.02 21:27)

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


 
Kopetr ©   (2002-09-07 21:35) [18]

>> Юрий Зотов :
Круто. А я уж думал, просто так :)


 
Kopetr ©   (2002-09-07 21:47) [19]

>> Юрий Зотов :
А как в таком случае избежать утечек памяти?
Ведь мы в любом случае теряем адреса всех созданных форм, кроме одной. И Form1 := Self происходит при создании в любом случае.



 
Юрий Зотов ©   (2002-09-07 22:41) [20]

> И Form1 := Self происходит при создании в любом случае.

Не в любом, а только если Form1 еще рано nil (для того там и поставлен if). То есть, если ни одна такая форма еще не создана. Аналогично при уничтожении - переменную Form1 будет очищать только та форма, на которую это переменная и ссылается.

В итоге переменную Form1 будет менять только ПЕРВЫЙ экземпляр формы. Он ее проинициализирует (в OnCreate), он же ее и очистит (в OnDestroy) - а все остальные экземпляры ее НЕ ТРОНУТ (потому что для них переменная Form1 будет уже и не nil, и не Self). Что и позволяет избежать ГАРАНТИРОВАННОГО перезатирания каждой новой формой ссылки на предыдущую.

А за остальное, естественно, отвечает программер. Например, если ему это нужно, он может создать массив (или список) форм. Или может прописать Action := caFree в OnClose. Или может показывать формы модально и тут же убивать их:

with TForm1.Create(...) do
try
if ShowModal = mrOK then
begin
...
end
finally
Free
end;

Существует еще целая куча способов и рецептов. Но универсальный, на все случаи жизни лишь один - внимательность и аккуратность.



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

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

Наверх




Память: 0.51 MB
Время: 0.014 c
1-61074
I'm
2002-09-09 17:08
2002.09.19
Как избавиться от мерцания TImage


1-61100
Aristarh
2002-09-06 14:13
2002.09.19
Определить путь к Common Files


14-61289
BigBadMutuh
2002-08-23 04:28
2002.09.19
Нужен снимок водопада.


1-61069
d_oleg
2002-09-09 13:39
2002.09.19
Font resolution и TextOut


14-61282
AlekseyK
2002-08-23 16:23
2002.09.19
Free Logo