两个 TListBoxes 使用相同的 TPopup 菜单?
Two TListBoxes using the same TPopup menu?
我有一个包含 'movie' 个项目的 TListBox,另一个包含 'snapshots' 个项目。我想为两个列表框使用一个弹出菜单。但是,在弹出菜单项的 onClick 事件中,如何确定使用了哪个列表框?
我试过这个:
void __fastcall TMainForm::DeleteAll1Click(TObject *Sender)
{
TListBox* lb = dynamic_cast<TListBox*>(Sender);
if(lb == mMoviesLB)
{
...
其中 DeleteAll1 是弹出菜单中的一个 TMenuItem。 lb 始终为 NULL,因此此处缺少某些内容..
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);
我有一个包含 'movie' 个项目的 TListBox,另一个包含 'snapshots' 个项目。我想为两个列表框使用一个弹出菜单。但是,在弹出菜单项的 onClick 事件中,如何确定使用了哪个列表框?
我试过这个:
void __fastcall TMainForm::DeleteAll1Click(TObject *Sender)
{
TListBox* lb = dynamic_cast<TListBox*>(Sender);
if(lb == mMoviesLB)
{
...
其中 DeleteAll1 是弹出菜单中的一个 TMenuItem。 lb 始终为 NULL,因此此处缺少某些内容..
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);