我有一个带有电影的TListBox'项目和另一个快照'。我想为两个Listbox使用一个弹出菜单。但是,在弹出菜单项的onClick事件中,如何解析使用了哪个列表框?
我试过了:
void __fastcall TMainForm::DeleteAll1Click(TObject *Sender)
{
TListBox* lb = dynamic_cast<TListBox*>(Sender);
if(lb == mMoviesLB)
{
...
其中DeleteAll1是弹出菜单中的TMenuItem。 lb总是NULL,所以这里缺少一些东西..
答案 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);