function TMain.ExistsForm(MDIFormCaption:String):boolean;
var
i:byte;
begin
result:=true;
for i:=0 to MDIChildCount-1 do
begin
if MDIChildren.Caption=MDIFormCaption
then
result:=false;
end;
end;
procedure Tmain.sysExecute(Sender: TObject);
begin
if ExistsForm('题库维护') then
begin
Application.CreateForm(Tform3, form3);
form3.show;
end else form3.show;
end;
onlyonekgx兄台,你试过了吗?还是出错。
是这样的,我做一个Mdi程序,其中的一个子窗口不能打开多个,
主窗口中定义变量f1:TForm1;
在子窗口的close 时间中执行action := cafree;self = nil;
按钮的click中执行:
if not assigned(f1) then
begin
f1:=tform1.create(self);
f1.show;
end
else
f1.bringtofront;
那你还必须在Form1
里定义一个Public变量,比如iFormType
用来跟踪f1,f2,f3
if not Assigned(F2) then begin
F2:=TForm2.Create(Application);
F2.iFormType:=1;
F2.Show;
end else
F2.BringToFront;
Close事件;
Action:=caFree;
Case iFormType of
1:f2:=nil;
end;