Zitat von
Lilo:
ka woran es liegt
Zumindest da kann ich dir helfen: wenn du eine Action an ein TMenuItem oder einen TButton bindest, dann hast du das Problem nicht. Die automatische Mitteilung der auslösenden Komponente in ActionComponent gibt es leider nur für Abkömmlinge von TComponent.
Fertigen Code zur Ermittlung des auslösenden ActionClient-Items (dein Anwendungsfall) habe ich in diesem Augenblick nicht, aber ich vermute, dass der Zugriff auf das protected member FSelectedItem des ActionMainMenuBar die gewünschte Information liefern könnte.
Stunden später ... na bitte:
Delphi-Quellcode:
type
THack = class(TActionMainMenuBar);
procedure TDemoForm.ActionExecute(Sender: TObject);
begin
if not Assigned(Sender) then
ShowMessage('triggered by shortcut') else
if not (Sender is TAction) then
ShowMessage('someone blew it') else
with Sender as TAction do
if Assigned(ActionComponent) then
ShowMessage(ActionComponent.Name)
else if Assigned(THack(ActionMainMenuBar).FSelectedItem) then
ShowMessage(THack(ActionMainMenuBar).FSelectedItem.Caption)
else ShowMessage(Name);
end;
Nicht schön, aber immerhin.
marabu