在MDI中如何建立基于同一个父类的多个Form实例,并且每个实例不会被重复建立?(300分)

  • 主题发起人 主题发起人 mycpp
  • 开始时间 开始时间
M

mycpp

Unregistered / Unconfirmed
GUEST, unregistred user!
在MDI中如何建立基于同一个父类的多个Form实例,并且每个实例不会被重复建立?
 
直接创建就可以了,想不被重复建立assigned()判断一下就可以了
或者你可以说的更清楚些好写出代码给你
 
procedure OpenForm(FormClass: TFormClass;
var fm;
AOwner:TComponent);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
if Child.WindowState=wsMinimized then
ShowWindow(Child.handle,SW_SHOWNORMAL)
else
ShowWindow(Child.handle,SW_SHOWNA);
if (not Child.Visible) then
Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;
调用如下,比如有一个FORM--form_jh,就可以这么写
openform(TForm_JH,Form_JH,self);
 
如我的程序中要用到10个相同的form,我已建立了一个TxxForm这个基类,
以后调用时想直接用TxxForm,这样就不会再建立10个物理上的TxxForm子类了。
HIGOAL:用if Assigned对这种情况没有用。
张无忌:我现在就是用的这种方法,它只适用于“再建立10个物理上的TxxForm子类”这种
情况。
 
TForm.CreateNew
 
多人接受答案了。
 
后退
顶部