Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
форма существует



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

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

Наверх





Память: 0.57 MB
Время: 0.018 c
1-52560
NewComer
2001-12-28 15:24
2002.01.17
Блин забыл...


4-52679
Undert
2001-11-15 19:02
2002.01.17
Опять таблица...


3-52502
Easy
2001-12-08 12:03
2002.01.17
Как можно исправить запись с испорченным мемо-полем в dbf-таблице?


1-52540
vbazik
2001-12-23 16:44
2002.01.17
Графика, вставка с масштабированием


1-52530
навичек
2001-12-27 07:41
2002.01.17
Дурацкая пошаговая отладка :(





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский