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

Delphi 2007 - ManualFloat causes widget controls to float above all other windows

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

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

有谁知道我如何通过不允许小部件成为最顶层或至少阐明可能的 solution/workaround 来解决这个问题?我的猜测是小部件正在成为 Application.MainForm.Handle 的父级,这就是我出现这种行为的原因。

提前致谢。

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

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