| 
      ...überprüfen, ob ein PopUp Menu geöffnet ist?
     | 
   
   
    | Autor: 
      oLeOlE     | 
   
  | [ Tip ausdrucken ] |   |   |   
 
 
 
{ 
  Using the WM_MENUSELECT message of the form won’t work to check if 
  the popup is open. Simply because the parent of the popup is not the 
  form (check the popup method of TPopupMenu). A workaround is to use 
  the api call yourself : 
} 
 
type 
  TForm1 = class(TForm) 
    {...} 
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton; 
      Shift: TShiftState; X, Y: Integer); 
 
  private 
    IsMenuOpen: Boolean; 
    procedure WMMENUSELECT(var msg: TWMMENUSELECT); message WM_MENUSELECT; 
  end; 
   
{...} 
implementation 
 
{...} 
 
procedure TForm1.WMMENUSELECT(var msg: TWMMENUSELECT); 
begin 
  inherited; 
  IsMenuOpen := not ((msg.MenuFlag and $FFFF > 0) and 
    (msg.Menu = 0)); 
end; 
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; 
  Shift: TShiftState; X, Y: Integer); 
begin 
  if Button = mbRight then 
    with ClientToScreen(Point(X, Y)) do 
      TrackPopupMenuEx(PopupMenu1.Handle, TPM_LEFTALIGN, X, Y, 
        Self.Handle, nil); 
end; 
 
 
 
  
   
     
      
         
          | 
		     Bewerten Sie diesen Tipp: 
		  
		   | 
         
       
     | 
   
 
                      
                       |