I'm replacing my good old TMainMenu with TActionMainMenuBar but have some issues with it.
I'm currently using for my main menu items the 'OnClick' handler, but I can't find a way to reproduce the same behavior with TActionMainMenuBar.
For example, I create a TAction "Test" with category "Sample" and I drag/drop this on the TActionMainMenuBar. I can add code to the execute handler of the sub-menu "Test" because it has a TAction assigned to it, but I can't add event code to the main menu item "Sample" because it is just a Category / TActionClientItem of "Test" with no events.
I tried to assign an Action to this TActionClientItem, but Delphi XE3 is saying "You cannot set property ..." and when I click that it gives me a dialog "Actions not implemented for the current framework 'None'".
Another way would be two TActions, "Sample" and "Test" with "(no category)", but I can't drag/drop "Test" as sub-menu of "Sample" which I dropped on the TActionMenuBar before. It looks like I can only drag/drop main menu items, and not sub-menu items on an empty main menu item.
The purpose for using the main menu item's
OnClickhandler is usually to determine whether sub-menu items are enabled/disabled or visible. It's also usually where you enable/disable things like toolbar buttons that perform the same function:For
TActionMainMenuBaritems, you do this in the individual actions instead, in theOnUpdateevent. The advantage of this is that when you enable/disable the action, all controls connected to the action are also enabled/disabled at the same time.The
OnUpdateevent is called just before the the child items are displayed, which is the same time that the old main menu item'sOnClickwould be called.