Pregunta

En Delphi 7, hay una forma de averiguar si un menú emergente está visible (se muestra en la pantalla) o no, ya que carece de una propiedad visible.

¿Fue útil?

Solución

Puedes crear tu propia bandera configurándola en el evento OnPopup. El problema es saber cuándo se cierra el menú emergente. Peter Below tiene una solución para eso.

Pero mi te pregunto por qué querrías esto? Tal vez haya una mejor manera de resolver el problema subyacente.

Otros consejos

Esto parece ser un poco más simple (usé Delphi 2007):

En su controlador de mensajes WM_CONTEXTMENU, antes de llamar al controlador heredado, el menú emergente está a punto de mostrarse, puede establecer su marca. Después de llamar a una llamada heredada, el menú emergente se ha cerrado, restablece tu marca.

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top