Delphi显示窗体的“模式方式”与“非模式方式”

“模式窗体”可以简单的理解,用户必须在完成该窗体上的操作或关闭窗体后才能返回打开此窗体的窗体。

From.ShowDialog()方法

以模式方法显示窗体的,在被创建的窗体关闭之前它都不会返回。通过显示地调用Close方法或设置DialogResult属性可以关闭这种窗体。

From.Show()方法

以非模式方法显示新的窗体并且立即返回,并不会在当前激活的窗体和新窗体之间创建任何关系;这意味着现存的窗体可以被关闭,而新窗体仍然继续显示。

 

Showmodal()是个函数,Show()是个过程

一个窗口用Showmodal函数显示出来后,程序不会继续自己执行, 而是根据你对这个窗口的操作来执行, ,只有关闭了这个窗口后才会执行。

Form.ShowModal() 时相当于执行了一个 Call,主窗体是能够处理下一条消息,其它的窗体不接受用户的操作,ShowModal() 以下的代码在 ShowModal() 出的窗体被关闭前是不会被执行的,但并不影响父窗体的消息循环

一个窗口用Show过程显示出来后,代码一样往下执行的,即程序会继续执行

举例:

ShowModal 出来的对话框必须关掉才能处理其他窗体.也就是当前焦点不能转移到其他的窗体上,除非关掉。

Show 出来的对话框则可以将当前焦点转移到其他界面上。

Delphi 里 Show出来的一般是子窗体,对话框叫非模式对话框,ShowModal 出来的是主窗体,叫模式对话框.

fomr2.ShowModal时,要求Form2.Visiable=False,假使你设置为Visiable=True就会产生错误

发布了423 篇原创文章 · 获赞 39 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/msh2016/article/details/103760929