![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить... [D6]
NewComer © (2001-12-29 14:07:00)Есть переменная типа TForm, она не nil, как проверить указывает ли она на реально существующую форму? может форму уже освободили , а указатель на нее не "обнулили"...
try except не предлагать.
Belov (2001-12-29 16:17:00) [1]if Assigned(Form1) = nil then
форма не существует
else
форма существует
Anatoly Podgoretsky (2001-12-29 16:15:00) [2]Нужно устранить необходимость в повторном использовании переменной тогда и проверять не потребуется.
Andrey (2001-12-29 16:06:00) [3]Понял. Просто я такой конструкцией не пользовался. Тогда я думаю только через FindComponent.
NewComer (2001-12-29 15:48:00) [4]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 15:44:00) [5]Почему Self := nil, не срабатывает понятно.
А как это "не зная имени ссылки"? Или у вас OnClose общий для нескольких форм. Но даже в таком случае можно для каждой формы сделать свой OnClose из которого вызывать общий.
procedure T Form2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
Form2:=nil;
end;
NewComer (2001-12-29 15:35:00) [6]Да. Все верно. ежели переменную обнулить, то срабатывает(что неудивительно).. но как обнулить.. не зная имени ссылки?.. Self := nil, не срабатывает.
Andrey (2001-12-29 15:31:00) [7]Self - это один из указателей на объект.
Нам нужен другой указатель, а именно Form1, Form2, Form3 ... короче то что у формы в свойстве Name написано.
NewComer (2001-12-29 15:08:00) [8]Вот именно.. помню писал Action:=caFree; Self:=nil; почему то счас Self := nil, не отрабатываеться.. Хм.. почему?
Andrey (2001-12-29 14:39:00) [9]Зная Owner-а формы можно
Owner.FindComponent("Name формы")=nil - Формы нет
Owner.FindComponent("Name формы")<>nil - Форма есть
Обычно Owner это Application.
А почему "обнулить самому нет возможности", по моему в OnClose формы можно вставить:
Action:=caFree;
Form:=nil;
NewComer (2001-12-29 14:18:00) [10]обнулить самому нет возможности.
Andrey (2001-12-29 14:10:00) [11]А может лучше обнулять указатель самому.