Главная страница
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.754 c
1-1127304615
voe
2005-09-21 16:10
2005.10.09
Отслеживания жизнидеятельности процесса


3-1125252147
SergP
2005-08-28 22:02
2005.10.09
Увеличение размера базы ACCESS после открытия представления


14-1126869057
Kerk
2005-09-16 15:10
2005.10.09
Спам создает общественное мнение


1-1126797235
Alex Kryuchkov
2005-09-15 19:13
2005.10.09
Программное создание макроса в Экселе


5-1101991492
Павел
2004-12-02 15:44
2005.10.09
Назначение переменных BorlandIDEServices и ToolServices