Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];




Вниз

Как проверить... 


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
форма существует




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.01.17;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.026 c
1-52577           Стас                  2001-12-28 08:33  2002.01.17  
QReport


3-52469           ev                    2001-12-11 19:15  2002.01.17  
что за база?


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


1-52586           Mikhalyov Dmitry      2001-12-27 16:21  2002.01.17  
О фреймах


3-52457           KMZ                   2001-12-14 09:09  2002.01.17  
MDI формы в Делфях