AGB  ·  Datenschutz  ·  Impressum  







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

TAction(List) wofür ist das gut?

Ein Thema von p80286 · begonnen am 18. Jan 2015 · letzter Beitrag vom 5. Aug 2023
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

TAction(List) wofür ist das gut?

  Alt 18. Jan 2015, 10:52
Hallo zusammen,
es ist Sonntag und da kann man mal versuchen etwas über seinen Tellerrand zu schauen.

Im Prinzip finde ich die Idee gut eine zentralen Einsprung von der GUI in die Verarbeitenden Routinen zu haben.
Nur beim Durchlesen der Doku stellt sich das für mich so dar, daß die TAction(List) nur mit vorher registrierten Komponenten umgehen kann.
Und da ich immer noch ein Freund von nicht installierten Programmen bin, scheint Taction(List) für mich unbrauchbar.
Oder hab ich da was in den falschen Hals bekommen?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: TAction(List) wofür ist das gut?

  Alt 18. Jan 2015, 11:21
Eine Action-List ist erstmal nur innerhalb Deiner Delphi-Anwendung gültig und hilft Dir, Code wenigstens ein bisschen von er Oberfläche fern zu halten.

Stelle Dir vor, Du hättest eine Action "SaveData", die Deine Daten sichern soll. Im OnExecute-Event dieser Action definierst Du den Programmcode, der nötig ist.
Zusätzlich hat die Action noch Eigenschaften wie "Caption", "Hint", "ImageIndex" oder "Enabled". Klassiker, die Du zum Beispiel von Buttons oder Menüeinträgen kennst. Wenn Du diese Eigenschaften bei Deiner Action einstellst und dann zum Beispiel einem Button diese Action zuweist, holt er sich alle relevanten Einstellungen aus der Action. Er ist also sofort richtig beschriftet. Nun weise die selbe Action einem Menüeintrag zu. Auch dieser wird sich die Beschriftung holen. Jetzt hast Du Dich vielleicht in der Beschriftung vertan - ändere sie einmalig in der Action und diese Änderung wird sich auf den Button UND den Menüeintrag auswirken.
Sollte Dein Programm an einer Stelle sein, an der es nichts zu speichern gibt, das Ausführen der Action keinen Sinn ergeben würde, stelle deren Eigenschaft "Enabled" auf FALSE. Prompt hat sich dies auf den Button und den Menüeintrag ausgewirkt.

Actions können schon sehr praktisch sein.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: TAction(List) wofür ist das gut?

  Alt 18. Jan 2015, 11:28
Ein weiterer sehr schöner Aspekt der Actions ist der Event Delphi-Referenz durchsuchenTAction.OnUpdate. Dieser wird ständig (immer wenn die Anwendung in den Idle-Modus geht) aufgerufen und man kann den Status der Action festlegen.

Dadurch spart man sich eine Menge Code, die z.B. eine ganze Reihe von Buttons ständig auf Enabled/Disabled stellen soll und es dann solche Rattenschwänze gibt, wo sich immer wieder alles wiederholt.

Im Event wird einfach überprüft, ob der aktuelle Status diese Aktion zulässt oder nicht und setzt die Enabled Eigenschaft der Action (oder auch jede andere, je nach Bedarf).
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#4

AW: TAction(List) wofür ist das gut?

  Alt 18. Jan 2015, 12:55
Kann mich Daniel und Sir Rufo nur anschließen.

Schau Dir mal die angehängt actDemo.zip (Source und Echse) an, benutzt wurden nur Standardkomponenten von D7.

"Programmiert" darin sind nur vier Prozeduren, den Rest habe ich im OI zusammengeklickt bzw. hinterher im OI miteinander verbunden.

Ändere mal im OI z.B. die Caption für "actCopy" in der ActionList und Du siehst sofort, wie sich das auf das Mainmenu, den Button und das Popupmenu auswirkt.

Markier' in der laufenden Echse etwas im RichEdit, und Du siehst sofort, wie sich die Prozedur "actCopyUpdate" auf Mainmenu, den Button und das Popupmenu auswirkt.

Bei mir hat es auch etwas gedauert, bis ich die enormen Vorteile einer ActionList kapierte (DRY), danach habe ich viele - eher kleine - Spaghetticode-Programme mit einer ActionList nachgerüstet.

Tipp für ein neues Projekt: Erst eine ImageList, dann eine ActionList auf das Formular. "Programmiert" wird dann in den Actions der ActionList, die man den MenuItems in Mainmenu, PopUps usw. (ggfs. nachträglich) zuweist.

MfG
Angehängte Dateien
Dateityp: zip actDemo.zip (223,6 KB, 46x aufgerufen)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: TAction(List) wofür ist das gut?

  Alt 19. Jan 2015, 09:51
Es ist leider nicht mehr Sonntag, aber dieser (für Borland-Verhältnisse) relativ neue Artikel dürfte wahrscheinlich alles abdecken:

Actions, Action Lists And Action Managers
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: TAction(List) wofür ist das gut?

  Alt 19. Jan 2015, 10:59
Hallo und vielen Dank. Nach Pelzigs Beispiel weiß ich so ungefähr wie der Hase läuft. Es scheint also auch ohne GUIDs zu gehen.
@den schönsten aller Männer
Wenn nicht Sonntag dann eben abends irgendwann

vielen Dank nochmals.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: TAction(List) wofür ist das gut?

  Alt 19. Jan 2015, 11:03
Ich hab mir den Artikel schon vor Monaten auf meine ToDo-Liste gelegt und ihn bis heute nicht geschafft
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: TAction(List) wofür ist das gut?

  Alt 19. Jan 2015, 11:23
Ich hab mir den Artikel schon vor Monaten auf meine ToDo-Liste gelegt und ihn bis heute nicht geschafft
Du hast zu wenige Sonntage

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#9

AW: TAction(List) wofür ist das gut?

  Alt 5. Aug 2023, 11:48
Danke für dieses Offenlegung und INFOs über den SInn und Zweck von ActionLists.
  Mit Zitat antworten Zitat
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#10

AW: TAction(List) wofür ist das gut?

  Alt 5. Aug 2023, 12:03
Kann mich Daniel und Sir Rufo nur anschließen.

Schau Dir mal die angehängt actDemo.zip (Source und Echse) an, benutzt wurden nur Standardkomponenten von D7.

"Programmiert" darin sind nur vier Prozeduren, den Rest habe ich im OI zusammengeklickt bzw. hinterher im OI miteinander verbunden.

Ändere mal im OI z.B. die Caption für "actCopy" in der ActionList und Du siehst sofort, wie sich das auf das Mainmenu, den Button und das Popupmenu auswirkt.

Markier' in der laufenden Echse etwas im RichEdit, und Du siehst sofort, wie sich die Prozedur "actCopyUpdate" auf Mainmenu, den Button und das Popupmenu auswirkt.

Bei mir hat es auch etwas gedauert, bis ich die enormen Vorteile einer ActionList kapierte (DRY), danach habe ich viele - eher kleine - Spaghetticode-Programme mit einer ActionList nachgerüstet.

Tipp für ein neues Projekt: Erst eine ImageList, dann eine ActionList auf das Formular. "Programmiert" wird dann in den Actions der ActionList, die man den MenuItems in Mainmenu, PopUps usw. (ggfs. nachträglich) zuweist.

MfG
DANKE; eine FRAGE: Wie hast Du es geschaft, dass wenn man im RichEdit Feld was markiert dass, automatisch EINFÜGEN aktiv ist. Gibt es das OnEdit im RichEdit Feld? Oder wo ist da das Event bzw. der On-Handler.
DANKE
  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 19:10 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