wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了windows – Delphi – 如何防止窗体/ MsgBoxes在以前的窗体中移动?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

很多时候,在 Windows 98时代之后,我们经历过一些对话失去了Z-Order,并回到了之前的形式. 例如: Dialog1.ShowModal; Dialog1.onClickButton() : Showmessage('anything');messageBox出现时,它有时没有焦点,并在Dialog1下移动. 用户感到困惑,他们说:我的应用程序冻结! 但是如果他们使用Alt Ta
很多时候,在 Windows 98时代之后,我们经历过一些对话失去了Z-Order,并回到了之前的形式.

例如:

Dialog1.ShowModal;

Dialog1.onClickButton() : Showmessage('anything');

messageBox出现时,它有时没有焦点,并在Dialog1下移动.
用户感到困惑,他们说:我的应用程序冻结!
但是如果他们使用Alt Tab移动到另一个应用程序并返回,焦点返回到messageBox,它将前台窗口.

我们已经体验过Showmessage,messageBox,正常表单和QuickReport表单.

有人知道吗这是Windows错误吗?你怎么能阻止它?如何抓住这个?

谢谢你的帮助:
DD

我真的说,在Win98之后,所以所有的操作系​​统(Win7也)都受到这个问题的影响.
我们使用Delphi 6 Prof,所以属性不能与认表单一起使用.

有人说消息对话框可以通过messageBox MB_APPLMODAL来控制.
这是个好消息,但是我们有很多旧的表单和组件,第三方工具.

所以用这种形式来代替一个全新的应用程序是很难的.

但是我们会尝试这样做.

我认为答案是这是一个半应用程序问题和一半的Windows问题.如果Windows有时处理这个,有时候不会这样 – 似乎是一个Windows错误.
但是如果我们可以强制使用模态窗口,那么它是一个编程错误.

有人可以向我解释WS_POPUP标志的意思是什么?
是否有一些副作用?

谢谢:
DD

这就是 PopupMode and PopupParent properties.

例如,你可以做:

Dialog1.PopupMode := pmExplicit;
Dialog1.PopupParent := self;
Dialog1.ShowModal;

这告诉Windows正确的Z顺序.

大佬总结

以上是大佬教程为你收集整理的windows – Delphi – 如何防止窗体/ MsgBoxes在以前的窗体中移动?全部内容,希望文章能够帮你解决windows – Delphi – 如何防止窗体/ MsgBoxes在以前的窗体中移动?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。