Show 与 ShowModal 区别
来源:互联网 发布:如何ringerlink数据库 编辑:程序博客网 时间:2024/04/30 06:04
最近遇到了问题,就是在form关闭时,需要判断一下是以哪种方式打开的然后分别处理,所已就看了一下ShowModal方法的源码,我截取了一段核心的
Show; try SendMessage(Handle, CM_ACTIVATE, 0, 0); ModalResult := 0; repeat Application.HandleMessage; if Application.FTerminate then ModalResult := mrCancel else if ModalResult <> 0 then CloseModal; until ModalResult <> 0; Result := ModalResult; SendMessage(Handle, CM_DEACTIVATE, 0, 0); if GetActiveWindow <> Handle then ActiveWindow := 0; finally Hide; end;
大家一看就会明白,它也是先调用Show方法, 然后对他发送CM_ACTIVATE 消息,使当前窗体为活动窗体
关键是下面那个循环,这个循环导致你只有关闭了该窗口之后,才能操作其他之前打开的窗口。
关于判断打开的方式,可以用 Form1.FormState这个属性,这是个集合属性,如果Form是以ShowModal打开的,那边fsModal一定在集合中,所以
代码应该是
if fsModal in self.FormState then ShowMessage('I am opened by ShowModal method') else ShowMessage('I am opened by Show method');
能力有限,分析至此。
- Show 与 ShowModal 区别
- Showmodal与show的区别
- Showmodal与Show的区别
- Showmodal与Show的区别
- Showmodal与Show的区别
- Showmodal与Show的区别
- DELPHI中Showmodal与Show的区别(转载)
- show和showmodal的区别
- ShowModal 和 Show 的区别
- ShowModal和Show的区别
- form show 和form.ShowModal的区别
- show()与showdialog()区别
- ShowModal
- ShowModal
- ShowModal
- C# Show() 与 ShowDialog()区别
- show()与showDialog()的区别
- show()与exec()的区别
- Boyer-Moore算法学习
- linux 下去掉^M
- Android仿Launcher效果
- ubuntu更新(安装)软件卡死解决方案
- pthread_create传递参数/单个或者多个
- Show 与 ShowModal 区别
- C# API 大全
- linux下字体乱码问题的解决
- 禁用VS2010的IntelliSense
- 在VS2010开发环境中CString 和char转换
- HDU Electrical Outlets
- DatePickerDialog---漂亮的弹出时间框
- ubuntu config default java
- Java String StringBuffer的区别(性能)