Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.01 c
14-38479
VEG
2003-01-25 12:14
2003.02.13
XXI век - начало бессмертия людей?


1-38335
___ALex___
2003-02-02 16:44
2003.02.13
Vertival Scroll Bar


14-38494
romychk
2003-01-27 00:39
2003.02.13
Слово мужчины, дружба теперь это только понятия давно минувших дн


14-38541
viper
2003-01-29 11:57
2003.02.13
Interbase 7.0


14-38449
Tsr
2003-01-29 17:43
2003.02.13
Пижоны




   Наверх