Delphi 2007 - ManualFloat使小部件控件浮动在所有其他窗口之上



我们在Delphi 2007应用程序中有一些Widget控件。小部件继承自TWinControl。在小部件上,我们调用TControl方法ManualFloat来卸载小部件。

问题是,当MainFormOnTaskBar为true时,调用ManualFloat会给小部件StayOnTop类似的行为,导致它漂浮在包括其他应用程序在内的所有窗口之上。这是一个问题,因为如果你从表单打开一个模态对话框,然后它出现在小部件的后面。当MainFormOnTaskBar为False时,模态对话框将出现在小部件的顶部。

有没有人知道我如何解决这个问题,不允许小部件成为最重要的,或者至少在一个可能的解决方案/变通的一些光?我的猜测是小部件被父级到Application.MainForm.Handle,这就是为什么我得到这个行为。

您是否尝试将Widget的父窗体强制作为主窗体?

MyWidget.manualFloat(screenpos);    
MyWidget.Parent := MyMainForm;
MyWidget.ParentWindow := MyMainForm.Handle;
MyWidget.left := left desired 
MyWidget.Top := Right.desired; 

最新更新