我们在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;