4

Delphi 7 中是否有办法确定弹出菜单是否可见(显示在屏幕上),因为它缺少 Visible 属性。

4

2 回答 2

4

您可以通过在 OnPopup 事件中设置它来制作自己的标志。问题是知道弹出菜单何时关闭。彼得下面有一个解决方案。

但我问你为什么要这个?也许有更好的方法来解决根本问题。

于 2008-09-26T07:48:37.273 回答
2

这似乎有点简单(我使用的是 Delphi 2007):

在您的 WM_CONTEXTMENU 消息处理程序中,在调用继承的处理程序之前,即将显示弹出菜单,您可以设置您的标志。调用继承后,弹出菜单已关闭,重置您的标志。

procedure TForm1.WMContextMenu(var Message: TWMContextMenu);
begin
  FPopupActive := True;
  try
    OutputDebugString(PChar(Format('popup opening', [])));
    inherited;
  finally
    FPopupActive := False;
    OutputDebugString(PChar(Format('popup closed', [])));
  end;
end;
于 2008-09-26T12:35:38.603 回答