2008-09-26 52 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;