AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TActionClientItem caption auslesen

Ein Thema von Lilo · begonnen am 14. Apr 2006 · letzter Beitrag vom 1. Dez 2006
Antwort Antwort
Lilo

Registriert seit: 10. Jul 2005
26 Beiträge
 
#1

TActionClientItem caption auslesen

  Alt 14. Apr 2006, 14:56
moin ^^

habe folgendes problem...

ich lade zur Laufzeit aus einer datenbank mehrere sachen und erzeuge zu jedem Datensatz einen eintrag im Actionmenue... so weit so gut ^^

jetzt bekommen alle einträge die selbe action zugwiesen und dann geht mein problem los ^^

in der action soll das caption des jeweiligen Items ausgewertet werden welches die action aufruft und da komme ich atm nicht weiter... hab bis jetzt nur folgendes gefunden:

((ActionManager1.FindItemByAction((Sender As TAction)).Caption)) das bringt mir aber leider nur die caption des ersten items was mit der action verknüpft ist ;(

wäre nett wenn mir da jemand weiterhelfen könnte wie ich die caption des jeweilig aufrufenden items herausbekommen könnte ^^

und nein ich möchte nicht zu jedem item eine eigene action anlegen

gruß lilo
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: TActionClientItem caption auslesen

  Alt 14. Apr 2006, 15:02
Hi,

mit der Eigenschaft Delphi-Referenz durchsuchenActionComponent von TAction sollt's gehen

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
Lilo

Registriert seit: 10. Jul 2005
26 Beiträge
 
#3

Re: TActionClientItem caption auslesen

  Alt 14. Apr 2006, 15:34
edit... danke erstmal^^

kannst du mir eventuell noch sagen wie ich das genau raus bekomme? irgendwie bin ich wohl zu blöd das hinzubekommen ;( in der hilfe steht zwar auch drin das es genau das macht was ich brauche, aber wie baue ich das dann in den code ein ^^

gruß lilo
  Mit Zitat antworten Zitat
Lilo

Registriert seit: 10. Jul 2005
26 Beiträge
 
#4

Re: TActionClientItem caption auslesen

  Alt 15. Apr 2006, 12:28
kann mir da keiner mal en beispiel geben plz? ich fummel da ez schon einen tag dran rum ^^ wäre echt nett wenn mit da einer mal auf die sprünge helfen könnte

gruß
lilo
  Mit Zitat antworten Zitat
marabu

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

Re: TActionClientItem caption auslesen

  Alt 15. Apr 2006, 13:48
Hi Lilo,

schau mal in diesen thread: klick

Grüße vom marabu
  Mit Zitat antworten Zitat
Lilo

Registriert seit: 10. Jul 2005
26 Beiträge
 
#6

Re: TActionClientItem caption auslesen

  Alt 15. Apr 2006, 14:12
genau das hab ich mir auch schon angeschaut aber das ist nicht das was ich brauche ...
im prinzip gehts ja nur darum

Delphi-Quellcode:
  with Sender as TAction do
    if Assigned(ActionComponent)
      then ShowMessage(ActionComponent.Name)
      else ShowMessage(Name);
aber das funzt nicht... da komm ich immerwieder in den else zweig und demzufolge immer nur den name der action ...

mein prob ist atm das ich nicht weiss wie ich nach dem aufruf meiner aktion an den ActionComponent komme bzw wie ich diesen abfrufe... denn wenn ich es mache wie es oben im code geschrieben steht, dann ist der zeiger auf ActionComponent immer nil in meiner action...

ich brauche nur die caption des aufrufenden items in meiner Actionmainmenuebar ^^

ka woran es liegt ^^ vielleicht sollte ich mir lieber ne playstation zulegen

gruß
lilo
  Mit Zitat antworten Zitat
marabu

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

Re: TActionClientItem caption auslesen

  Alt 15. Apr 2006, 14: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
Lilo

Registriert seit: 10. Jul 2005
26 Beiträge
 
#8

Re: TActionClientItem caption auslesen

  Alt 15. Apr 2006, 15:01
absolut funzt einwandfrei ^^ aber das das so umständlich ist hätte ich net gedacht

danke nochmal

gruß
lilo
  Mit Zitat antworten Zitat
Benutzerbild von Lun
Lun

Registriert seit: 4. Feb 2006
122 Beiträge
 
Delphi 2005 Professional
 
#9

Re: TActionClientItem caption auslesen

  Alt 1. Dez 2006, 12:39
Hallo zusammen,

ich habe folgendes Problem, ich bin jetzt sozusagen an der gleichen Stelle. Ich habe mein Problem jetzt so gelöst
mit den Captions wie hier beschrieben. Ich habe jetzt aber das Problem, das ich nicht die Captions haben möchte sondern
2 andere String Variablen. Da das ActionClientItem, aber nur die Eigenschaft Caption hat. Dachte ich mir das ich die Klasse ableite
und 2 String Variablen anhänge. Leider funktioniert das nicht.

hier zu der Code:

erst die Abgleitete Klasse:

Delphi-Quellcode:

type
  TMyActionClientItem = class(TActionClientItem)

  private
       speicher : String;
  public

  end;

Mein Item aus dem ActionMainMenubar:

Delphi-Quellcode:
itemX:TActionClientItem;


//Das Menü wird Dynamisch erstellt und an dieser stelle ist eine for schleife
itemX := ActionManager.ActionBars[0].Items[7].Items[i].Items.Add;
//Und hier wird das Item zu dem Menü mit Index i geaddet.
itemX.Action := iAction;

//achtung jetzt kommt das Problem

itemX.Caption := 'blub';
TMyActionClientItem(itemX).speicher := 'speicher';
Ich weiß jetzt nicht genau, ob ich von der Falschen Klasse ableite, um zusätzliche Strings in jedem Item zu hinterlegen. Oder
ich einen Fehler mache beim ableiten der Klasse. Ich will eigentlich nur dem item zwei neue String Variablen hinzufügen,
damit ich noch mehr als nur die Caption jedem Item mitgeben kann.
Wenn ich so compeliere bekomme ich eine Execption EAccesViolation, Fehler beim Lesen speicherstelle blub.
Wenn ich itemX direkt als mein TMyActionClientItem instanziere, bekomme ich den Fehler an dieser Stelle, dass
itemX := ActionManager.ActionBars[0].Items[7].Items[i].Items.Add;
Incompatible Typen : TMyActionClient und TActionclientItem.

Vielleicht versuche ich gerade was unmögliches keine Ahnung.

Schon mal thx for help.

greetz Lun
  Mit Zitat antworten Zitat
Benutzerbild von Lun
Lun

Registriert seit: 4. Feb 2006
122 Beiträge
 
Delphi 2005 Professional
 
#10

Re: TActionClientItem caption auslesen

  Alt 1. Dez 2006, 17:32
Also das mit dem inkompatiblen Typen ist mir jetzt kar, ich kann ja schlecht der Kindklasse die Parentklasse zuweisen.
Geht nur anders herum, aber selbst wenn ich das tue begreift die Parentklasse nicht das sie jetzt eigentlich noch das Attribut
Speicher : String mehr haben sollte.

Ich denke ich habe irgendwo einen Denkfehler. *grummel*

Ob ich TMyActionClientItem(itemX).speicher := 'speicher';

schreibe oder (itemX as TMyActionClientItem).speicher := 'hmpf'; ist auch pott wie deckel nur das ich ne andere Fehlermeldung
bekomme "Ungültige Typumwandlung".

greetz Lun
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz