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

Вниз

Как проверить...   Найти похожие ветки 

 
NewComer ©   (2001-12-29 14:07) [0]

Есть переменная типа TForm, она не nil, как проверить указывает ли она на реально существующую форму? может форму уже освободили , а указатель на нее не "обнулили"...
try except не предлагать.


 
Andrey ©   (2001-12-29 14:10) [1]

А может лучше обнулять указатель самому.


 
NewComer ©   (2001-12-29 14:18) [2]

обнулить самому нет возможности.


 
Andrey ©   (2001-12-29 14:39) [3]

Зная Owner-а формы можно
Owner.FindComponent("Name формы")=nil - Формы нет
Owner.FindComponent("Name формы")<>nil - Форма есть

Обычно Owner это Application.


А почему "обнулить самому нет возможности", по моему в OnClose формы можно вставить:
Action:=caFree;
Form:=nil;


 
NewComer ©   (2001-12-29 15:08) [4]

Вот именно.. помню писал Action:=caFree; Self:=nil; почему то счас Self := nil, не отрабатываеться.. Хм.. почему?


 
Andrey ©   (2001-12-29 15:31) [5]

Self - это один из указателей на объект.

Нам нужен другой указатель, а именно Form1, Form2, Form3 ... короче то что у формы в свойстве Name написано.


 
NewComer ©   (2001-12-29 15:35) [6]

Да. Все верно. ежели переменную обнулить, то срабатывает(что неудивительно).. но как обнулить.. не зная имени ссылки?.. Self := nil, не срабатывает.


 
Andrey ©   (2001-12-29 15:44) [7]

Почему Self := nil, не срабатывает понятно.

А как это "не зная имени ссылки"? Или у вас OnClose общий для нескольких форм. Но даже в таком случае можно для каждой формы сделать свой OnClose из которого вызывать общий.

procedure T Form2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
Form2:=nil;
end;


 
NewComer ©   (2001-12-29 15:48) [8]

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
Form2:=nil; <- Ошибка!
end;
...........

procedure Terra;
var F: TForm2; //!!! например
begin
F := TForm2.Create(Application);
......................
end;



 
Andrey ©   (2001-12-29 16:06) [9]

Понял. Просто я такой конструкцией не пользовался. Тогда я думаю только через FindComponent.


 
Anatoly Podgoretsky ©   (2001-12-29 16:15) [10]

Нужно устранить необходимость в повторном использовании переменной тогда и проверять не потребуется.


 
Belov ©   (2001-12-29 16:17) [11]

if Assigned(Form1) = nil then
форма не существует
else
форма существует



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

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

Наверх




Память: 0.49 MB
Время: 0.009 c
1-52597
Сенченко Андрей
2001-12-29 14:20
2002.01.17
Хочу чтобы меня видели !!! ( DLL )


7-52676
REL
2001-10-02 19:43
2002.01.17
Com порт


14-52642
wHammer
2001-11-21 08:09
2002.01.17
Шахматы


1-52578
bit
2001-12-29 09:59
2002.01.17
ScanLine


14-52665
Donal
2001-11-19 13:46
2002.01.17
кто стучится в дверь моя?