Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.006 c
14-52660
zvon
2001-11-23 07:03
2002.01.17
как программно отправить файл на мыло


1-52531
Трынкин Сергей
2001-12-27 16:24
2002.01.17
Снова по поводу курсора мыши


1-52529
Labert
2001-12-27 16:19
2002.01.17
В чем дело, интересно...


1-52621
programmer1
2001-12-28 22:51
2002.01.17
Динамическая плдгрузка dll-библиотеки


1-52584
sergant
2001-12-28 16:32
2002.01.17
Как поменять цвет шрифта в Memo?




   Наверх