Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: TActionClientItem caption auslesen

  Alt 15. Apr 2006, 13:47
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
  Mit Zitat antworten Zitat