Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Внизivalid class typecast Найти похожие ветки
← →
fROT (2004-02-19 12:07) [0]Создал MDI Application
на обращения к MDI Child Formam написал
функцию
function TMainForm.ShowChildForm(ClassTypeForm: TChildForm): TForm;
var
i: integer;
begin
for i := 0 to MDIChildCount - 1 do
if MDIChildren[i].ClassType = ClassTypeForm then
begin
MDIChildren[i].SetFocus;
Result := MDIChildren[i];
Exit;
end;
Result := ClassTypeForm.Create(Application);
end;
а если надо обратится к нужной мне форме то пишу такой код:
procedure TMainForm.aOpenSearchExecute(Sender: TObject);
begin
fSearch := MainForm.ShowChildForm(TfSearch) as TfSearch;
end;
это в главной форме. А если из другой дочерней формы, то сбоит при втором вызове, т.е. тогда когда я пытаюсь показать форму, а она уже есть. Но почему ? В главной форме все нормально работает...
← →
Юрий Зотов (2004-02-19 12:17) [1]function TMainForm.ShowChildForm(ClassTypeForm: TChildFormClass): TForm;
где TChildFormClass надо объявить после объявления TChildForm:
TChildFormClass = class of TChildForm;
← →
Владислав (2004-02-19 12:18) [2]Мне кажется, что проблема здесь:
MDIChildren[i].SetFocus;
Result := MDIChildren[i];
← →
tROT (2004-02-19 12:21) [3]вот как я обьявил
type TChildForm = class of TForm;
← →
tROT (2004-02-19 12:24) [4]2 Владислав
Ты прав!!!!
при вызове метода SetFocus - MDIChildren[i] - уже не того типа
поменял местами - все ок.
← →
Юрий Зотов (2004-02-19 12:28) [5]> tROT (19.02.04 12:21) [3]
> вот как я обьявил
> type TChildForm = class of TForm;
Тогда верно, но зачем вводить лишние объявления, когда уже есть точно такое же TFormClass?
← →
Владислав (2004-02-19 12:30) [6]Набери MDIChildren в справке и прочти внимательно все, что там написано. Чтобы просветление наступило ;)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c