Главная страница
    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.46 MB
Время: 0.004 c
1-52551
Eduard
2001-12-27 12:34
2002.01.17
Property FileName


7-52674
UsBall
2001-09-10 00:34
2002.01.17
Воспроизведение AVI - а если хочется ручками прокрутить????


1-52600
Romul
2001-12-29 17:10
2002.01.17
Вопрос по TThread


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


3-52517
facquodvis
2001-12-17 10:49
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский