网站大量收购独家精品文档,联系QQ:2885784924

子窗体的打开和关闭精选.doc

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
子窗体的打开和关闭精选

Delphi编程资料精华汇总标题: 父窗体fsmDIForm 子窗体fsMDIChild 内容: 设置父窗体Formstyle为fsmDIForm?子窗体为fsMDIChild 1.???如果你需要你的子窗体就是设计时的那个子窗体,??? ??用Application.CreateForm(TFormChild,FormChild);创建该子窗体,则再使用FormChild.Close;时应该不会报错。??? ??2.???MDI子窗体的默认关闭操作为最小化,想让它真正关闭,在其OnClose中写Action:=caFree;??? ??3.???如果你的子窗体只是用TFormChild类创建的实例(用TFormChild.Create(Application);或TFormChild.Create(self);创建的),则一般不能用FormChild来引用它(如它是全局变量等情况例外)。可以考虑以下几个方法:??? ??//关闭最早建立的实例??? ??MainForm.MDIChildren[MainForm.MDIChildCount-1].close;??? ??//关闭最晚建立的实例??? ??MainForm.MDIChildren[0].close;??? ??//关闭当前活动实例??? ??MainForm.ActiveChild.close;??? ??//关闭所有子窗体??? ??for???i:=0???to???MainForm.MDIChildCount-1???do??? ????MainForm.MDIChildren[i].close; Delphi?MDI应用程序高级技巧三则(一)2008-07-28?07:47本文介绍几个Delphi?MDI应用程序的编程技巧,虽然纯属技巧,但是本文的方法在正常编程时,通常会被编译器认为是错误的或是违背编程环境缺省许可值的。不过有时为了一些特殊的用途或特殊的视觉效果,按下述的方法一试,可以在明知不可违而违之的情况下,得到很好的结果。 下述各示例均在Delphi6、Windows2000下完成,对涉及的控件命名是任意的,仅为方便说明问题。 一、子窗口的隐藏? 在Delphi编程环境下,MDI子窗口在运行期间可以动态地被创建和销毁,但是不能够被隐藏,如果试图通过Visible属性或Hide方法隐藏子窗口,编译器将报出“Cannot?hide?an?MDI?Child?Form.”的错误提示! 如果某个子窗口中承载了很多要保留的数据而不能销毁,但又暂时不想要它出现在屏幕上时,最好的方法就是将其隐藏,待需要时再将其显示出来则可。下面两种方法可以隐藏和显示子窗口,并避开了编译器的报错提示。 1)?使用Windows?API函数ShowWindow(),示例代码如下: ShowWindow(ChildForm.Handle,?SW_HIDE);?????//?隐藏子窗口 ShowWindow(ChildForm.Handle,?SW_RESTORE);?//?显示子窗口 说明:使用Windows?API直接隐藏子窗口,其子窗口的Visible属性和其显示状态是不一至的。当子窗口不可见时,其Visible属性可能仍然是True。 ???????2)?直接设置子窗口的Visible属性 此时,首先要在需要隐藏的子窗口中重载TCustomForm的VisibleChanging方法,并在其实现过程中屏蔽掉继承代码,否则编译器将在隐藏子窗口时报错。 然后就可以直接设置这个子窗口的Visible属性为False或True来隐藏或显示它了。示例如下: a)?子窗口部分 … type TChildForm?=?class(TForm) private ????procedure?VisibleChanging;?override;//重载 ????… end; … procedure?TChildForm.VisibleChanging; begin {使用组件属性隐藏子窗口时,需要重载此过程,并且不执行任何继承代码,否则将报错} //inherited;?不能执行此语句! end; b)?隐藏或显示子窗口 ChildForm.Visible:=false;//隐藏子窗口 ChildForm.Visible:=true;?//显示子窗口 说明:直接使用组件属性隐藏或显示子窗口,子窗口的Visible属性和其显示状态是一至的。笔者认为这样做要安全一些。 ?子窗口分布控制2008-07-28?07:531.叠窗口.? Form1.Cascade;? 2.横向平铺窗口? Form1.TileMo

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档