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.

È stato utile?

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top