关于MDI的问题,分数不是问题

pladinbabyzby 2003-12-18 11:09:21
我在开发一个MDI系统时发现当父窗体创建后,子窗体也自动创建在父窗体内,使用以下代码仍然不行
procedure TFrmMain.N15Click(Sender: TObject);
var I:integer;
begin
for I:=MdiChildCount-1 downto 0 do
MdiChildren[I].Close;
end;
end;

还要在各个子窗口写入
procedure TFrmchildn.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=cafree;
Frmchildn:=nil;

end;
有什么办法能在父窗体创建后,不打开子窗体,当我需要时再打开,
很急!!!!请各位大哥帮助,谢谢
...全文
37 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
angle097113 2003-12-19
  • 打赏
  • 举报
回复
我想就是你的project菜单的options属性里把那些子窗体的自动创建去掉就应该没有问题了吧 需要显示的时候再create然后再显示的吧
haipin 2003-12-19
  • 打赏
  • 举报
回复
建议用一个基类,在FORMCLOSE的时候加入:
action:=cafree;
Frmchildn:=nil;
其它MDI窗口继承这个基类,新建一个MDI窗口的时候,要判断MDI窗口是否打开,我这里有个函数你用去吧:
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[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;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;
sundayboysII 2003-12-18
  • 打赏
  • 举报
回复
此贴不要给我分数。
zsjzwj 2003-12-18
  • 打赏
  • 举报
回复
创建子窗体的代码:

procedure TFormMain.Buttons1Click(Sender: TObject);
var
FForm : TFormRS_PXXX;
begin
FForm := TFormRS_PXXX.Create(self);
FForm.Show;
end;
sundayboysII 2003-12-18
  • 打赏
  • 举报
回复
天,你发了多少个帖子啊???
设置Project-》Option的Form的创建列表,设置它们是自动创建还是手动创建。

不过在用的时候一定要判断一下,如果不存在就手动创建一下。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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