我程序中有主窗体 form1和子窗体form2,form2以form2.show显示
主窗体中点击按钮先启动一个 ttimer,然后application.messagebox('hello','title',mb_iconinformation)显示一个modal的消息框,这是ttimer计时器到达,在ontimer中执行form2.bringtofront,将form2提前,从而盖住了modal消息框,使得鼠标无法操作窗口了。如果 alt+tab切换一下窗口,可以吧modal消息框提前到上面显示,这样可以关闭modal消息框了。请问如何在代码里使modal消息框不被覆盖住,就是保持modal消息框Zorder位于最上面?
主窗体中点击按钮先启动一个 ttimer,然后application.messagebox('hello','title',mb_iconinformation)显示一个modal的消息框,这是ttimer计时器到达,在ontimer中执行form2.bringtofront,将form2提前,从而盖住了modal消息框,使得鼠标无法操作窗口了。如果 alt+tab切换一下窗口,可以吧modal消息框提前到上面显示,这样可以关闭modal消息框了。请问如何在代码里使modal消息框不被覆盖住,就是保持modal消息框Zorder位于最上面?
举例:
windows.MessageBox(0, '顶层窗口', '顶层窗口', MB_ICONINFORMATION or MB_SYSTEMMODAL);详见MSDN
你的代码中messagebox和form2没有一毛钱关系, 更谈不上窗体顺序
要么你的messagebox置顶
要么你的messagebox在form2中创建
你主窗口同时调用两个窗口show了, 然后再弹出messagebox, 那么这三个窗口就一定有先后次序关系吗?你的问题原因很简单,不涉及复杂逻辑, 修改替换也相对安全, 该改就改, 没什么投机取巧的方法