Я хочу установить событие OnClick
для всех TMenuItems
на экране, чтобы сделать то, что происходит в данный момент, и еще несколько строк кода. Я в настоящее время использую Delphi 5
Например, скажем, что у меня есть TMenuItem
с кодом:
procedure TdesktopForm.MenuFoo1Click(Sender: TObject);
begin
ShowMessage(TComponent(Sender).Name)
end;
и у меня также есть следующая процедура:
procedure TdesktopForm.bar;
begin
ShowMessage('extra')
end;
И я хочу, чтобы каждый раз, когда я нажимал на TMenuItem, программа показывала имя TMenuItem, а также сообщение «extra».
Показанный пример является лишь демонстрацией моей проблемы, так как в реальном программном обеспечении у меня более 300 пунктов меню, я хочу сделать это в общем, поэтому мне не придется добавлять дополнительные строки кода ко всем текущим щелчкам меню и не добавляйте их при добавлении новых пунктов меню. Порядок выполнения (между щелчком меню и дополнительным блоком кода) не имеет значения.
Я пытался использовать TActionList
, но я не смог получить объект, запускающий действие, поэтому я не могу напечатать его имя. Я пытался использовать ActiveControl
, но он всегда возвращает сфокусированный в данный момент сфокусированный объект, а не фактическое меню, которое я щелкнул. А также, событие TAction
execute перезаписывает мое TMainMenu.OnClick
событие