Debe ser lo suficientemente simple pero no puedo verlo.delphi - cómo se puede saber a qué TPopupMenu pertenece un TMenuItem
Usted puede encontrar el componente que se hace clic derecho en para mostrar un menú emergente con:
PopupMenu1.PopupComponent
pero ¿cómo encontrar el menú emergente que contiene el TMenuItem que era a su vez se hace clic en ese ¿menú?
Para simplificar el problema a un ejemplo:
tengo una serie de etiquetas, cada una con un título diferente, y tengo un menú emergente que se asigna a la propiedad PopupMenu de cada una de las etiquetas.
Cuando alguien hace clic con uno de los sellos y se abre el menú emergente, y luego hace clic en MenuItem1, quiero código:
procedure TForm1.MenuItem1Click(Sender: TObject);
begin
MsgBox (Format ('The label right-clicked has the caption %', [xxxx.Caption ])) ;
end ;
¿Cuál debe ser xxxx?
respuesta Implementado
Gracias a ambos encuestados. Lo que terminó con la era esto:
procedure TForm1.MenuItem1Click(Sender: TObject);
var
AParentMenu : TMenu ;
AComponent : TComponent ;
ALabel : TLabel ;
begin
AParentMenu := TMenuItem (Sender).GetParentMenu ;
AComponent := TPopupMenu (AParentMenu).PopupComponent ;
ALabel := TLabel (AComponent) ;
MsgBox (Format ('The label right-clicked has the caption %', [ALabel.Caption ])) ;
end ;
que también interroga a la que estaba involucrado TMenuItem y por lo tanto me da un fragmento de código que pueda caer en otros manipuladores OnClick con menos modificaciones.
sabía que iba a ser sencillo ... que estaba buscando en las propiedades de TMenuItem y nunca pensé que mirar los métodos. Muchas gracias. – rossmcm