电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

子窗体的打开和关闭VIP免费

子窗体的打开和关闭_第1页
1/19
子窗体的打开和关闭_第2页
2/19
子窗体的打开和关闭_第3页
3/19
Delphi编程资料精华汇总标题:父窗体fsmDIForm子窗体fsMDIChild内容:设置父窗体Formstyle为fsmDIForm子窗体为fsMDIChild1.如果你需要你的子窗体就是设计时的那个子窗体,用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;//关闭所有子窗体fori:=0toMainForm.MDIChildCount-1doMainForm.MDIChildren[i].close;DelphiMDI应用程序高级技巧三则(一)2008-07-2807:47本文介绍几个DelphiMDI应用程序的编程技巧,虽然纯属技巧,但是本文的方法在正常编程时,通常会被编译器认为是错误的或是违背编程环境缺省许可值的。不过有时为了一些特殊的用途或特殊的视觉效果,按下述的方法一试,可以在明知不可违而违之的情况下,得到很好的结果。下述各示例均在Delphi6、Windows2000下完成,对涉及的控件命名是任意的,仅为方便说明问题。一、子窗口的隐藏在Delphi编程环境下,MDI子窗口在运行期间可以动态地被创建和销毁,但是不能够被隐藏,如果试图通过Visible属性或Hide方法隐藏子窗口,编译器将报出“CannothideanMDIChildForm.”的错误提示!如果某个子窗口中承载了很多要保留的数据而不能销毁,但又暂时不想要它出现在屏幕上时,最好的方法就是将其隐藏,待需要时再将其显示出来则可。下面两种方法可以隐藏和显示子窗口,并避开了编译器的报错提示。1)使用WindowsAPI函数ShowWindow(),示例代码如下:ShowWindow(ChildForm.Handle,SW_HIDE);//隐藏子窗口ShowWindow(ChildForm.Handle,SW_RESTORE);//显示子窗口说明:使用WindowsAPI直接隐藏子窗口,其子窗口的Visible属性和其显示状态是不一至的。当子窗口不可见时,其Visible属性可能仍然是True。2)直接设置子窗口的Visible属性此时,首先要在需要隐藏的子窗口中重载TCustomForm的VisibleChanging方法,并在其实现过程中屏蔽掉继承代码,否则编译器将在隐藏子窗口时报错。然后就可以直接设置这个子窗口的Visible属性为False或True来隐藏或显示它了。示例如下:a)子窗口部分…type1TChildForm=class(TForm)privateprocedureVisibleChanging;override;//重载…end;…procedureTChildForm.VisibleChanging;begin{使用组件属性隐藏子窗口时,需要重载此过程,并且不执行任何继承代码,否则将报错}//inherited;不能执行此语句!end;b)隐藏或显示子窗口ChildForm.Visible:=false;//隐藏子窗口ChildForm.Visible:=true;//显示子窗口说明:直接使用组件属性隐藏或显示子窗口,子窗口的Visible属性和其显示状态是一至的。笔者认为这样做要安全一些。子窗口分布控制2008-07-2807:531.叠窗口.Form1.Cascade;2.横向平铺窗口Form1.TileMode:=tbHorizontal;Form1.Tile;3.纵向平铺窗口Form1.TileMode:=tbVertical;Form1.Tile;4.重排图标Form1.ArrangeIcons;我在每一個MDI的子視窗開啟的時候,都自動用水平方式排列,讓開啟的子視窗能平均排列在畫面中,但當其中一個子視窗關閉的時候,如何讓剩餘開啟的子視窗能重新排列一次?1.Addatimeronthemainform,setenabledtofalse&intervalto1002.addbelowcodesonit'sOnTimereventprocedureTMainForm.Timer1Timer(Sender:TObject);beginTTimer(Sender).Enabled:=False;MainForm.TileMode:=tbHorizontal;MainForm.Tile;end;3.addbelowcodesonMDIChild'soncloseevent...implementationusesMAIN;{$R*.dfm}...procedureTMDIChild.FormClose(Sender:TObject;varAction:TCloseAction);beginMainform.Timer1.Enabled:=True;Action:=caFree;end;2Delphi:隐藏MDI子窗口带来的问题2008-07-2808:43...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

子窗体的打开和关闭

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部