Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Forms Delphi:带有fsStayOnTop的气球窗体在Win7中不工作_Forms_Delphi_Window_Balloon_Topmost - Fatal编程技术网

Forms Delphi:带有fsStayOnTop的气球窗体在Win7中不工作

Forms Delphi:带有fsStayOnTop的气球窗体在Win7中不工作,forms,delphi,window,balloon,topmost,Forms,Delphi,Window,Balloon,Topmost,我有一个应用程序,使用我自己的气球形式。 这是一种无边框的fsStayOnTop类表格 我用以下代码显示它: ShowWindow(Handle, SW_SHOWNOACTIVATE); Visible := True; 今天我意识到,如果我激活另一个应用程序,气球就不会出现! 所以它正在失去它的顶级风格 环境: Win7/x64 德尔福6专业 我能用它做什么 谢谢: dd过去,在努力保持最佳状态时,什么对我有效: Form := TMyForm.Create(Self); Applicati

我有一个应用程序,使用我自己的气球形式。 这是一种无边框的fsStayOnTop类表格

我用以下代码显示它:

ShowWindow(Handle, SW_SHOWNOACTIVATE);
Visible := True;
今天我意识到,如果我激活另一个应用程序,气球就不会出现! 所以它正在失去它的顶级风格

环境: Win7/x64 德尔福6专业

我能用它做什么

谢谢:
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 B”OnCreate事件中:

FormStyle:=fsStayOnTop

但光是这一点还不够

将at应用程序事件拖到“表格B”上

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

SetForegroundWindow(手柄)

当我的主要表单处理站点外的数据时,我会一直关注一个小的状态窗口。工作得很漂亮