Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как проверить... [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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо