Title: How to check if a PopUp Menu is open
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;