我在 CodeGear C++ VCL 应用程序中有许多相关的 TMenuItem。
每个 TMenuItem 都与同一个动作 (TAction) 相关联。
单击 MenuItem 时,将触发操作(即其执行方法)。
我将需要以某种方式在操作 OnExecute 函数中转换 Sender 参数,以确定单击了哪个菜单项。
目前我有这样的东西
void __fastcall TMoleculixDesktopMainUnit::openMoleculeSelectionFormAExecute(TObject *Sender)
{
//User selected a menuitem under Molecules Menu
TAction* anItem = dynamic_cast<TAction*>(Sender);
//AminoAcidsMI is a TMenuItem
if(AminoAcidsMI == dynamic_cast<TMenuItem*>(anItem->Owner))
{
//Open molecule search form with aminoacids
MLog()<<"Looking for Amino Acids..";
}
}
但以上不起作用动作所有者不是MenuItem。