测试程序:
4个窗口,Form1 ----> 主窗口
Form2,Form3---->普通窗口,非模式运行
Form4 ----->模式窗口程序启动 Form1,可点击菜单 分别打开 Form2.show 和 Form3.show
此时,可以任意在 Form1 , Form2, Form3 之间切换窗口操作,
若点击Form2上的按钮,打开 Form4.showModal
出现不解的问题现像, Form1 , Form2, Form3 三个窗口全部挂起,不能切换了.通常MS开发的程序中(VB,C#),应该是 Form2上面 进行 Form4.showModal 哪么应该只挂起 Form2.也就是说可以继续操作 Form3 和 Form1 ,只有 Form1(应用程序主窗口)上激发的模式窗口或对话框才挂起所有窗口.
对Delphi不熟,不知道如何处理以实现 Form2 激发的模式窗口或对话棋框,只挂起Form2,而不是挂起整个应用程序.
4个窗口,Form1 ----> 主窗口
Form2,Form3---->普通窗口,非模式运行
Form4 ----->模式窗口程序启动 Form1,可点击菜单 分别打开 Form2.show 和 Form3.show
此时,可以任意在 Form1 , Form2, Form3 之间切换窗口操作,
若点击Form2上的按钮,打开 Form4.showModal
出现不解的问题现像, Form1 , Form2, Form3 三个窗口全部挂起,不能切换了.通常MS开发的程序中(VB,C#),应该是 Form2上面 进行 Form4.showModal 哪么应该只挂起 Form2.也就是说可以继续操作 Form3 和 Form1 ,只有 Form1(应用程序主窗口)上激发的模式窗口或对话框才挂起所有窗口.
对Delphi不熟,不知道如何处理以实现 Form2 激发的模式窗口或对话棋框,只挂起Form2,而不是挂起整个应用程序.
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;
ShowModal的部分代码,
从代码里看到DELPHI里的模态窗体是接管了程序的消息循环
直到给窗体ModalResult 一个值才会把消息循环交还给Application
所以在操作模态窗体的时候是没办法操作程序里的其他窗体的!