Текущий архив: 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