Delphi Pop Up菜单可见性

时间:2020-03-06 14:46:10  来源:igfitidea点击:

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

解决方案

我们可以通过在OnPopup事件中对其进行设置来制作自己的标志。问题是知道何时关闭弹出菜单。彼得·比尔(Peter below)为此提供了解决方案。

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

这似乎更简单(我使用的是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;