2008-09-26 96 views

回答

4

您可以通过在OnPopup事件中设置您自己的标志。问题是知道popupmenu何时关闭。 Peter Below有一个解决方案。

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

+1

控件弹出菜单,现在我想在某些情况下再次单击控件时显示菜单。问题是当菜单被显示并且点击发生在菜单get之外的菜单之外,并且控件不知道菜单是否可见。 (希望不要混淆) – Drejc 2008-09-26 08:44:28

2

这似乎是一个简单一点(我使用德尔福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;