DELPHI里面的MDI程序是怎么做出来的啊?

crazymanonly 2004-09-30 01:53:23
我以前是做VB的 VB里面的MDI很好做啊

可是DELPHI是怎么做的呢
是不是只能根据向导里面做出来的MDI改啊

谢谢了 最后8分 穷啊
...全文
168 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
grjs2004 2004-10-06
  • 打赏
  • 举报
回复
楼上的用 FreeAndNil(self); 的话,如果打开后再关闭,再打开的话,就不能再调用子窗体了!
所以省不得的还是不能省!
crazymanonly 2004-09-30
  • 打赏
  • 举报
回复
什么意思啊 楼上
happyhong 2004-09-30
  • 打赏
  • 举报
回复
不好用的
crazymanonly 2004-09-30
  • 打赏
  • 举报
回复
跪谢了
baiyu211 2004-09-30
  • 打赏
  • 举报
回复
谢谢 Kevin_Lmx(繁华阅尽) ,你的解释不错,对偶帮助挺大的!\\偶是菜鸟,不要消化我!
Kevin_Lmx 2004-09-30
  • 打赏
  • 举报
回复
大哥又是你呀?我来告诉你吧。
首先要像楼上的兄弟所说的一样,设置主窗体的属性和Child窗体的属性,然后只要你Show出这个Form来,它就变成MDI了。但是你会发现无法关闭这个MDI窗体,这是因为它的Close属性Action在作怪。
你打开它的OnClose事件,会发现这样的声明:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; //你只要在这里写上这一句,就可以关闭这个MDI窗体了。
end;
至于这个Action,还有其它的可以选的:caNone,caHide,caFree,caMinimize
caNone :不对Close的消息做任何响应。
caHide :关闭时将这个窗口隐藏起来。
caFree :关闭时释放掉这个窗体。
caMinimize:关闭时最小化这个窗体。(这个就是MDI窗体的默认Action值)
呵呵,希望对你有帮助^-^
jeckyang 2004-09-30
  • 打赏
  • 举报
回复
在表单的中有属性formstyle,如果要将表单做成mdi父表单设置成fsmdiform,子表单设置成fschildform
Kevin_Lmx 2004-09-30
  • 打赏
  • 举报
回复
像楼上的这种动态生成窗体的话,OnClose就不用那么复杂了,直接写:
FreeAndNil(self);
就行了。
grjs2004 2004-09-30
  • 打赏
  • 举报
回复
照一楼、二楼的那样做的话,多关闭打开几次就会出问题!
我给楼主一段完全好用的代码:

主窗体与子窗体就如一楼所那样做。

在Options里把子窗体调到Available forms里去!

在调用子窗体的Click事件中加以下代码:
if not Assigned(ChildForm) then
ChildForm:=TChildForm.Create(Application);
ChildForm.show;

在子窗体的Onclose事件里加以下代码:

Action:=caFree;
ChildForm:=nil;

这样无论你关闭和打开多少次都没有问题!
而且速度也很快,不用时可以节省资源!

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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