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

Вниз

Много МDI форм один обработчик их создания в RunTime!!!!   Найти похожие ветки 

 
Serghei   (2003-02-03 15:58) [0]

Привет всем!!! Вопрос такой - имеется МДИ приложение с 5-6 формами, которые создаются в рантайме fmParams, fmCopy etc. Для каждой формы написан свой евент Menu1.Click, Menu2.Click etc. Как бы сделать так чтобы все формы можго было создавать вместо отдельных функций fmParams:=TFmParams.Create(...)... одной функцией LaunchForm(frm : Txxx)? ? ?
Всем удачи!!!


 
Skier ©   (2003-02-03 16:02) [1]

>Serghei

1)TBaseFormClass = class of TBaseForm
2 TFmParams = class(TBaseForm)
TFmCopy = class(TBaseForm)
?


 
Serghei   (2003-02-03 16:15) [2]

> Skier
Я конечно извиняюсь но я не ахти какой спец - выдвигаю еще вопросик, TBaseForm - это какой конкретно класс ?
Мои формы (вернее классы)
TfmEdit, TfmCopy, TfmParams, TfmValute, TfmCalcul - и все пораждены от TForm.


 
Skier ©   (2003-02-03 16:27) [3]

>Serghei

TBaseForm - класс-предок для всех твоих форм.
1) TBaseForm = class(TForm)
2) TFmParams = class(TBaseForm)
TFmCopy = class(TBaseForm)
............................

TfmCalcul = class(TBaseForm)


 
Serghei   (2003-02-03 16:39) [4]

Хорошо, но ведь класс TForm и так является предком для всех этих форм.
Я написал примерно так:

procedure LaunchMDIForm(frm :TForm);
var ClsT : TClass;
begin
ClsT:=frm.ClassType;
if not Assigned(frm) then
begin
frm:=ClsT.Create(self);
frm.Show;
.....
end;
end;

но вновь создаваемая форма былф чмстой TForm. !!!


 
Serghei   (2003-02-03 17:11) [5]

???


 
Игорь Шевченко ©   (2003-02-03 17:13) [6]

Например:
procedure TfMain.showDictionary(FormClass: TFormClass; var Reference);
var Instance :TfAbstDictionary;
begin
if not Assigned(TComponent(Reference)) then begin
Instance:=TfAbstDictionary(FormClass.NewInstance);
TComponent(Reference):=Instance;
try
Instance.Create(Self);
except
on E :Exception do begin
TComponent(Reference):=nil;
ShowError(Format("Ошибка при открытии справочника "%s"",[FormClass.ClassName]));
end;
end;
end;
with TfAbstDictionary(Reference) do begin
Show;
if WindowState = wsMinimized then
WindowState := wsNormal;
end;
end;



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
1-38374
Vadim2222111
2003-02-04 09:36
2003.02.13
Как вставить два рисунка в один image


1-38195
multik
2003-02-04 22:52
2003.02.13
Как в treeview узнать есть ли у него подузел


14-38547
me2
2003-01-29 16:56
2003.02.13
Пароль к Eh_lib_rus


7-38605
Blacker77
2002-12-09 23:25
2003.02.13
Вопрос о CD-Rom приводе


14-38529
race1
2003-01-26 14:49
2003.02.13
com