У меня есть ряд связанных TMenuItems в приложении VCL CodeGear C++.Как применить метод TMenuItem в методах выработки Tаксий?
Каждый TMenuItem связан с тем же действием (TAction).
При щелчке по элементу MenuItem срабатывает действие (его метод выполнения).
Мне нужно каким-то образом отбросить параметр Sender в функции OnExecute, чтобы выяснить, какой элемент меню был нажат.
В настоящее время у меня есть что-то вроде этого
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.
Ваш 'TAction.Execute' должен сделать одно: он должен обрабатывать код, который имеет дело с' AminoAcidsMI' и любыми другими элементами управления, которые выполняют те же функции. Тогда не имеет значения, какой из них используется, так как все они достигнут одной и той же точки исполнения. (Действия предназначены для присоединения к нескольким элементам управления, таким как пункты меню, кнопки панели инструментов, всплывающие меню и т. Д., Поэтому ни один элемент управления не может «владеть» действием.) –