Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie Actions erstellen? (https://www.delphipraxis.net/123964-wie-actions-erstellen.html)

moelski 12. Nov 2008 09:09


Wie Actions erstellen?
 
Moin !

bis dato habe ich Actions nur verwendet, aber ich würde gerne mal selbst eine erstellen. Mein Ziel ist ganz bescheiden ... Ich möchte bei einem TChart die Legende ein / ausschalten.

Wie ich generell eine Action erstellen kann ist mir ja klar -> über den ActionManager. Aber danach stehe ich irgendwie auf dem Schlauch.

Mir ist z.B. nicht klar wie das Handling funktioniert wenn ich 2 Charts habe. Dann sollte ja die Action je nach aktivem Chart reagieren (Bsp: Wenn ich einem Button diese Action zuweisen würde, dann müsste er je ein- bzw ausgeschaltet sein je nach Zustand der jeweiligen Legende.

Gibt es irgendwo ein Tutorial was das Erstellen von Actions in Kürze beschreibt?

s.h.a.r.k 12. Nov 2008 10:44

Re: Wie Actions erstellen?
 
es wird doch sicherlich ein Parameter namens Sender übergeben, oder? in diesem objekt (bzw. dies ist nur die referenz auf das objekt) steckt dann das passende chart, d.h. du darfst in der action nicht ein bestimmtes chart direkt ansprechen, sondern dies wie folgt machen:
Delphi-Quellcode:
TChart(Sender).Property

mkinzler 12. Nov 2008 10:45

Re: Wie Actions erstellen?
 
Oder per Softcast
Delphi-Quellcode:
(Sender as TChart).Propery

moelski 12. Nov 2008 10:47

Re: Wie Actions erstellen?
 
Moin !

Naja schon, aber das kann noch nicht der ganze Trick sein. Denn vorher weiss die Methode auf welchen Chart sie aktuell arbeiten muss? Wie gesagt ... Gehen wir mal davon aus du hast 2 Charts in der Anwendung.
Da muss also noch irgendein Mechanismus drumrum, um das aktuelle Control zu ermitteln.

mkinzler 12. Nov 2008 10:48

Re: Wie Actions erstellen?
 
Rate mal was Sender referenziert?

moelski 12. Nov 2008 10:55

Re: Wie Actions erstellen?
 
Moin !

Hmm evtl. habe ich da auch einen Gedankenfehler. Gehen wir mal hiervon aus:
Ich habe einen Button der eine Aktion bekommt und eben im Formular 2 Charts.

Wenn ich nun den Button drücke ist doch der das aktive Control. Wäre dann Sender nicht mein Button?
Das man über (Sender as TChart).Propery die Sache typcasten kann ist mir im Grunde ja klar. Aber mir fehlt im Moment die "Verbindung" zwischen der Action und dem aktiven Chart. :gruebel:

mkinzler 12. Nov 2008 10:58

Re: Wie Actions erstellen?
 
Ok da haben wir dich falsch verstanden. So kann die Methode also nicht wissen, welches Chart "aktiv" ist. das müsstest du dir irgendwie merken

s.h.a.r.k 12. Nov 2008 11:02

Re: Wie Actions erstellen?
 
hm, dass es in die richtung ging war mir echt nicht klar ;) das könntest dann unter anderem über den [b[tag[/b] des buttons lösen.

nicht um zu meckern: aber warum nutzt die keine zwei button? als user mag ich es, wenn ich eine eindeutige zuordnung von button und chart habe! ich kenne zwar deine applikation nicht, aber das wäre (mir) insgesamt wichtig, eben aus konsistenzgründen ;)

angos 12. Nov 2008 11:06

Re: Wie Actions erstellen?
 
Hi,

der Sender bei den Actions ist immer das Control, welches die Action aufruft. In deinem Fall der TButton.
Das hat folgenden Vorteil: Du möchtest die gleiche Aktion über einen Menüpounkt, einen Button und über ein PopUpMenü realisieren.
Du erstellst also die drei Teile, die eine Action und weisst nun nur noch die Action den drei Controls zu. So wird FUnktionalität, Icon und Caption direkt an alle drei Controls übergeben.
Das wsa du möchtest geht so nicht, das musst du, wie mkinzler sagte, dir merken

Gruß
angos

moelski 12. Nov 2008 11:08

Re: Wie Actions erstellen?
 
Moin !

@shark:
Der Grund ist folgender: Ich möchte in unserer Anwendung Charts dynamisch erzeugen. Da wäre es eher unpraktisch wenn ich für jedes Chart einen Button hätte. Bei 2 Charts mags ja noch gehen, aber danach wirds unlustig und unübersichtlich.

Und genau das ist ja eben der Vorteil von Actions das man "Aufgaben" einmal proggt und die dann eben wiederverwenden kann.

Bei TRichView gibt es eine eigene Action Unit. Wenn ich die einbinde, dann habe ich Standard Actions wie Fett, Kursiv, etc. Und dort erkennt die Action Unit auch eigenständig welches TRichView gerade aktiv ist. Drum bin ich eigentlich davon ausgegangen das es im Umfeld Actions einen Mechanismus geben muss. Denn das ist ja letztlich eine Sache die bei Actions immer auftreten müsste?!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Seite 1 von 2  1 2      

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