Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.09;
Скачать: CL | DM;

Вниз

Определить сужествование MDI Child формы   Найти похожие ветки 

 
Ярослав   (2005-09-15 09:52) [0]

У меня из одной MDI Child формы вызываеться метод другой MDI Child формы, но та другая форма модет быть уже закрыта и если так то и вызывать ее метод не нужно, как мне организовать такую проверку?

В событии onFormClose MDI Child форм у меня стоит Action:=caFree;
Однако сравнение МуMDIChildForm<>nil дает False


 
Reindeer Moss Eater ©   (2005-09-15 10:13) [1]

>Однако сравнение МуMDIChildForm<>nil дает False

Потому что нил ей никто не присваивал.
Или ты оператору <> не доверяешь?
:)


 
Федор   (2005-09-15 10:19) [2]

Можно устроить цикл по MDI формам и если нужная найдена, то вызвать метод.

Function FormExist(Name:string):Boolean;
var
i:integer;
begin
for i:=0 to form1.MDIChildCount-1 do
 if form1.MDIChildren[i].Name=name then begin
  result:=true;
  exit;
 end;
 result:=false;
end;


 
Ярослав   (2005-09-15 10:25) [3]

Оператору <> я доверяю, но как ей nil присвоить?
В цикле не могу, потому что я ее имени не знаю


 
alex_***   (2005-09-15 10:33) [4]

там же можно и присвоить, где caFree даешь, а лучше в деструкторе написать


 
Reindeer Moss Eater ©   (2005-09-15 10:37) [5]

>В цикле не могу, потому что я ее имени не знаю

А в операторе сравнения тогда откуда знаешь?


 
Ярослав   (2005-09-15 12:17) [6]

> alex_***   (15.09.05 10:33) [4]
Можно узнать, а как мне присвоить? У меня может быть несколько экзапляров этой формы, если я присвою MyForm:=nil; ничего страшного не произойдет?

> Reindeer Moss Eater ©   (15.09.05 10:37) [5]
И в операторе сравнения я не знаю, у меня переменная типа TForm и после того как она уничтожена я ее имя то не узнаю


 
Reindeer Moss Eater ©   (2005-09-15 12:20) [7]

>Однако сравнение МуMDIChildForm<>nil дает False

Это имя откуда?
Получено путем прямого соединения с космосом?


 
Плохиш ©   (2005-09-15 12:24) [8]


> Ярослав   (15.09.05 09:52)  
> У меня из одной MDI Child формы вызываеться метод другой
> MDI Child формы


> Ярослав   (15.09.05 12:17) [6]
> > alex_***   (15.09.05 10:33) [4]
> Можно узнать, а как мне присвоить? У меня может быть несколько
> экзапляров этой формы,

И метод должен вызываться для каждого экземпляра "другой MDI Child формы" или какого-то конкретного?

MyForm - у тебя просто указатель, для чего он тебе нужен, знаешь только ты.


 
Reindeer Moss Eater ©   (2005-09-15 12:27) [9]

Существование экземпляра класса формы и равенство переменной МуMDIChildForm nil - это две совершенно не связанные с собой явления.


 
Ярослав   (2005-09-15 12:31) [10]

МуMDIChildForm - Это переменная типа TForm, полученная при создании формы от формы ее вызвавщей, т.е. в ней храниться форма которая ее вызвала, и мне нужно из формы вызвать метод вызвавшей формы, пока вызвавшея форма существут все нормально, но когда она зарыта я  у же не могу обратиться к ней через эту переменную, вот мне и нужно проверить сужествует ли она


 
Reindeer Moss Eater ©   (2005-09-15 12:33) [11]

Существование экземпляра класса формы и равенство переменной МуMDIChildForm nil - это две совершенно не связанные с собой явления.


 
Reindeer Moss Eater ©   (2005-09-15 12:44) [12]

МуMDIChildForm - Это переменная типа TForm

Почему тогда говорил, что не знаешь имени переменной?


 
msguns ©   (2005-09-15 12:47) [13]

В корне неверный подход.
А если создано 2 экземпляра TМуMDIChildForm ?

Все методы, переменные, константы и прочие объекты, которые могут быть использованы разными дочками, должны быть либо в главной, либо в датамодуле, либо в другом перманентно существующем блоке кода (юните).
В этом случае все будет вполне реентерабельно и корректно.

Нарушение этого правила неминуемо приведет к "потерям" памяти в лучшем случае и к трудноисправимым глюкам в работе программы.


 
Плохиш ©   (2005-09-15 12:55) [14]


> Ярослав   (15.09.05 12:31) [10]
> МуMDIChildForm - Это переменная типа TForm, полученная при
> создании формы от формы ее вызвавщей, т.е. в ней храниться
> форма которая ее вызвала, и мне нужно из формы вызвать метод
> вызвавшей формы, пока вызвавшея форма существут все нормально,
>  но когда она зарыта я  у же не могу обратиться к ней через
> эту переменную, вот мне и нужно проверить сужествует ли
> она

Проверь наличие этой ссылки в MDIChildren.



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

Текущий архив: 2005.10.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.028 c
4-1123829294
Mickey Mouse
2005-08-12 10:48
2005.10.09
IrDA и Bluetooth в Delphi


6-1118676712
incX
2005-06-13 19:31
2005.10.09
Проблемы с Indy 10


11-1107935465
Barloggg
2005-02-09 10:51
2005.10.09
Как узнать тип родителя?


4-1123710061
Vadimich
2005-08-11 01:41
2005.10.09
Каким образом винда закрывает программы при рестарте?


3-1125425983
Step[B.M.]
2005-08-30 22:19
2005.10.09
Работа с PostgreSQL через ODBC