was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews
 sonstiges ¦  tutorials ¦  Add&Win Gewinnspiel

Tips (1547)

Dateien (137)
Datenbanken (90)
Drucken (35)
Grafik (115)
IDE (21)
Indy (5)
Internet / LAN (131)
IntraWeb (0)
Mathematik (76)
Multimedia (45)
Oberfläche (107)
Objekte/
ActiveX (51)

OpenTools API (3)
Sonstiges (127)
Strings (83)
System (268)
VCL (243)

Tips sortiert nach
Komponente


Tip suchen

Tip hinzufügen

Add&Win Gewinnspiel

Werbung

31 Visitors Online


 
...überprüfen, ob ein PopUp Menu geöffnet ist?
Autor: oLeOlE
[ Tip ausdrucken ]  

Tip Bewertung (17):  
     


{
  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:

dürftig
ausgezeichnet


Copyright © by SwissDelphiCenter.ch
All trademarks are the sole property of their respective owners