如何动态创建MDI子窗口

rouknuaa 2003-10-27 01:44:32
如何动态创建MDI子窗口!急阿!
最好给出代码!谢谢!
...全文
61 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jxc163 2003-10-27
  • 打赏
  • 举报
回复
在DELPHI的例子中有样的一个示例呀
lemon_wei 2003-10-27
  • 打赏
  • 举报
回复
新建一个窗体,在options中设置它为非自动创建,然后用下面的代码
var
Found:Boolean;
I:Integer;
begin
Found:= False;
I:= 0;
while (not found) and (I< MDIChildCount ) do
if MDIChildren[I] = Form2 then Found:= True
else I:=I+1;
if not found then
begin
form2:= Tform2.Create(self as TComponent);
end
ELSE
form2.Show;

end;
sailer_shi 2003-10-27
  • 打赏
  • 举报
回复
procedure TFrm_Main.OpenMDIForm(FormClass: TFormClass; var fm;
AOwner: TComPonent);
var
i: integer; //打开mdi子窗体
Child:TForm;
begin
if mdichildcount>10 then
begin
Application.MessageBox('打开窗体过多,造成系统资源紧张,请关闭部分窗体。','福思特系列软件',
MB_DEFBUTTON1+ MB_ICONINFORMATION+MB_OK);
end;
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i].ClassType=FormClass then
begin
Child:=Screen.Forms[i];
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;
child.left:=(screen.width - child.width )div 2;
child.top:=screen.height div 2 - child.height*5 div 8 ;//*5 div 8;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
child.left:=(screen.width - child.width )div 2;
child.top:=screen.height div 2 - child.height*5 div 8;//*5 div 8;
end;

后面调用的时候用openmdiform(TForm1,Form);就可以了

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧