Delphi:气球表单与fsStayOnTop不工作在Win7



我有一个使用我自己的气球表单的应用程序。这是一个无边框的fsStayOnTop类型表单。

我用下面的代码来显示它:

ShowWindow(Handle, SW_SHOWNOACTIVATE);
Visible := True;

今天我意识到,如果我激活另一个应用程序,然后气球不出现!所以它正在失去它的停留在顶部的样式。

环境:Win7/x64Delphi 6 Professional

我能用它做什么?

谢谢:dd

当我在与停留在顶部的表单作斗争时,什么对我有用:

Form := TMyForm.Create(Self);
Application.NormalizeTopMosts;
SetWindowPos(Form.Handle, HWND_TOPMOST, 0, 0, 0, 0,
             SWP_NOACTIVATE + SWP_NOMOVE + SWP_NOSIZE);
Form.Show;

试试这个代替您的ShowWindow呼叫。它停留在所有窗口的顶部(你真的想要这个吗?)此外,它感觉有点黑客,因为它省略了文档中说我们应该调用的RestoreTopMosts调用(因此应用程序中的其他停留在顶部的窗口将受到影响)。所以可能会有更好的解决办法。

我尝试了上面的解决方案,但它在次要形式上不起作用。我相信它将工作在一个主要形式,但不是在一个次要形式。然而,我确实找到了一个解决方案,适用于第二种形式,这听起来像最初的海报想要的,作为一个"气球形式"。通常是弹出式。

把它放到"Form & "OnCreate事件:

FormStyle: = fsStayOnTop;

但这还不够…

TApplicationEvents拖到您的"窗体"上

ApplicationEvents1OnDeactivate事件中,添加以下内容:

窗体提前(处理);

当我的主表单处理站点外的数据时,我会关注一个小的状态窗口。作品精美!

相关内容

  • 没有找到相关文章

最新更新