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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.016 c
1-6038
Sash
2004-02-16 07:04
2004.03.03
Handle окна


14-6195
Домарощинер
2004-02-11 19:52
2004.03.03
Предложите красивый(пошустрее и поменьше) алгоритм


4-6275
Крутыш
2003-12-26 08:29
2004.03.03
Как вызвать системное меню формы щелчком например на любой кнопке


1-6151
Дядя
2004-02-19 11:07
2004.03.03
OnDblClick из DLL


1-6051
Berezne
2004-02-17 17:51
2004.03.03
Правильное отображение дати