在一个MDI窗体中限制打开多个子窗体,采用遍历的方式判断子窗体是否已经存在
procedure Tf_Main.btnUpdateClick(Sender: TObject); var i:Integer; begin for i :=0 to f_main.MDIChildCount -1 do //MDIChildCount:总的子窗体个数 if (f_main.MDIChildren[i] is Tf_Pass) then //判断子窗体是否存在 begin self.MDIChildren[i].BringToFront; //把窗体放在最前面 MDIChildren[i].SetFocus; //窗体获得焦点 Exit; //退出函数体 end; //创建新窗体 Application.CreateForm(Tf_Pass,f_Pass); f_Pass.Show; end;
DMI子窗体如何设置让他不显示
把它关闭就行了,关闭的同时把它销毁 举个例子吧 一个工程里有两个窗体 Form1是父窗体 里面有个Button1 procedure TForm1.Button1Click(Sender: TObject); begin if Not Assigned(Form2) then Form2 := TForm2.Create(Nil); Form2.Show; end; form2是子窗体 procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := Cafree; Form2 := Nil; end; 这样就能关闭了 同时要说明,程序启动的时候如果不要Form2自己打开,就把工程文件里的Form2去掉(看注释) program Project1; uses Forms, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2);//去掉这一行 Application.Run; end.