Visibilità del menu a comparsa Delphi
Domanda
Esiste un modo in Delphi 7 per scoprire se un menu a comparsa è visibile (mostrato sullo schermo) oppure no, poiché manca una proprietà Visible.
Soluzione
Puoi creare il tuo flag impostandolo nell'evento OnPopup. Il problema è sapere quando il menu popup è chiuso. Peter Below ha una soluzione per questo.
Ma io ti chiedo perché lo vorresti? Forse esiste un modo migliore per risolvere il problema di fondo.
Altri suggerimenti
Questo sembra essere un po 'più semplice (ho usato Delphi 2007):
Nel gestore dei messaggi WM_CONTEXTMENU, prima di chiamare il gestore ereditato, sta per essere visualizzato il menu popup, è possibile impostare il flag. Dopo aver chiamato ereditato, il menu popup è stato chiuso, reimpostare il flag.
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;