delphi - как узнать, к какому TPopupMenu принадлежит TMenuItem

Должно быть достаточно просто, но я его не вижу.

Вы можете узнать компонент, по которому щелкнули правой кнопкой мыши, чтобы отобразить всплывающее меню, с помощью:

PopupMenu1.PopupComponent

, но как узнать всплывающее меню, содержащее TMenuItem, который, в свою очередь, был нажат в этом меню?

Чтобы упростим задачу до примера:

У меня есть серия ярлыков, каждая с разными заголовками, и у меня есть всплывающее меню, которое назначено свойству PopupMenu каждой из меток.

Когда кто-то щелкает правой кнопкой мыши одну из меток и открывает всплывающее меню, а затем щелкает MenuItem1, я хочу ввести код:

procedure TForm1.MenuItem1Click(Sender: TObject);

begin
MsgBox (Format ('The label right-clicked has the caption %', [xxxx.Caption ])) ;
end ;

Каким должен быть xxxx?

Реализованный ответ

Спасибо обоим респондентам. В итоге я получил следующее:

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 ;

, который также запрашивает, какой TMenuItem был задействован, и поэтому дает мне фрагмент кода, который я могу перенести в другие обработчики OnClick с меньшими изменениями.

9
задан rossmcm 9 July 2015 в 23:51
поделиться