两个TListBox使用相同的TPopup菜单?

时间:2016-08-10 17:50:30

标签: c++builder vcl

我有一个带有电影的TListBox'项目和另一个快照'。我想为两个Listbox使用一个弹出菜单。但是,在弹出菜单项的onClick事件中,如何解析使用了哪个列表框?

我试过了:

void __fastcall TMainForm::DeleteAll1Click(TObject *Sender)
{
  TListBox* lb = dynamic_cast<TListBox*>(Sender);

  if(lb == mMoviesLB)
  {
 ...

其中DeleteAll1是弹出菜单中的TMenuItem。 lb总是NULL,所以这里缺少一些东西..

1 个答案:

答案 0 :(得分:3)

TPopupMenu::PopupComponent属性告诉您哪个UI控件显示弹出菜单,例如:

void __fastcall TMainForm::DeleteAll1Click(TObject *Sender)
{
    TListBox* lb = dynamic_cast<TListBox*>(PopupMenu1->PopupComponent);
    ...
}

如果自动显示TPopupMenu(即:TPopupMenu::AutoPopup为真时右键单击控件),则会自动填充PopupComponent。但是,如果您自己调用TPopupMenu::Popup()PopupComponent将为NULL,除非您事先指定它,例如:

PopupMenu1->PopupComponent = ListBox1;
PopupMenu1->Popup(X, Y);