AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte AccessQuery - Massenobjektverarbeitung per Chain-Pattern
Thema durchsuchen
Ansicht
Themen-Optionen

AccessQuery - Massenobjektverarbeitung per Chain-Pattern

Ein Thema von WladiD · begonnen am 27. Apr 2010 · letzter Beitrag vom 1. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
WladiD
Registriert seit: 27. Jan 2006
Ein Hallo an alle Mitglieder,

ich bin ständigen Sprachwechseln ausgesetzt, mal PHP, mal JS und dann wieder Delphi. Bei jedem Wechsel gibt es irgendetwas, was man von einer anderen Sprache vermisst, vor allem wenn man von Delphi zu PHP (OOP ist da mehr ein Witz als Tatsache, auch in PHP 5) wechselt.

Jedenfalls habe ich mich durch die Arbeit an einem Web-Projekt so dermaßen an das JS-Framework jQuery, gewöhnt, dass ich beim letzten Switch zu Delphi nicht vom Gedanken loskommen konnte, eine ähnliche Unit für Delphi umzusetzen. Der Wunsch nach so einem Framework entstand, als die Anforderung bestand, ein paar kleine Positionierungsanimationen von irgendwelchen Komponenten durchzuführen.

So dauerte es nicht lange und aus diesem Bedürfnis (mit den Vorteilen von jQuery im Hinterkopf) entstand das Projekt:

AccessQuery

Wiederkehrende (zeitliche) Verarbeitung von Objekten durch anonyme Methoden, mittels modernster OOP-Entwurfsmuster (Chained-Chain-Pattern, Fluent-Interface, Garbage-Collector) und einem flexiblem Plugin-System auf Generics-Basis. AccessQuery ist prädestiniert für unabhängige und verteilte parametrische Animationen, jedoch ist der genaue Verwendungszweck nicht spezifiziert (rationalisiertes Konzept).

Die TAQ-Klasse (AQ ist die Abkürzung für AccessQuery) greift ein oder beliebig viele Objekte und bietet Methoden, diese mittels anonymer Methoden zu verarbeiten.

Die Verarbeitung kann...
  • sofort (TAQ.Each),
  • wiederholt (TAQ.EachRepeat),
  • zeitversetzt (TAQ.EachDelay),
  • zeitbegrenzt wiederholend (TAQ.EachTimer)
  • oder in unbegrenzten Intervallen wiederholt (TAQ.EachInterval)
...erfolgen.

Konzept

TAQ nutzt moderne objektorientierte Entwurfsmuster und kontextsensitive anonyme Methoden, die es dem Entwickler nicht nur erlauben mit weniger Code mehr zu erreichen, sondern vielmehr, zusammenhängende Code-Fragmente zu vereinen.
  • Die meisten TAQ-Methoden arbeiten nach dem Chain-Pattern
  • Abzweigungen mittels Chained-Chains oder bedingter Chains
  • [NEU] Flexibles Plugin-System für unbegrenzte Erweiterbarkeit
  • Indirekte Instanziierung nach dem Singleton-Pattern
  • Gemanagete TAQ-Instanzen, die durch den integrierten Garbage-Collector automatisch freigegeben werden
  • Unterstützt auch ungemanagete TAQ-Objekte
  • Beliebig viele zeitliche Aktionen über einen TTimer
  • [NEU] TAQPControlAnimations-Plugin für die Animation von Eigenschaften (Position, Hintergrund- und Schriftfarbe) aller TControl-Nachfahren
  • [NEU] TAQPMessages-Plugin für die Bindung beliebig vieler Message-Listener an von TControl abgeleitete Komponenten
Ein Beispiel:
Delphi-Quellcode:
// ...
implementation

uses
   AccessQuery,
   AQPControlAnimations; // Plugin (AQP = AccessQueryPlugin)

procedure TForm1.FormClick(Sender: TObject);
begin
   Take(Sender)
      .FinishAnimations
      .Plugin<TAQPControlAnimations>
      .ShakeAnimation(6, 20, 3, 20, 500);
end;
// ...
AccessQuery-Projektseite auf meiner KiHiWi-Seite (Dokumentation etc.) und Sourceforge (Code-Hosting).

AccessQuery wird unter der MPL 1.1 veröffentlicht: Lizenz.
Angehängte Dateien
Dateityp: zip accessquery.examples_178.zip (1,96 MB, 41x aufgerufen)
Dateityp: zip accessquery.r49_613.zip (52,5 KB, 36x aufgerufen)
 
WladiD

 
Delphi 10.4 Sydney
 
#2
  Alt 7. Mai 2010, 10:57
Eigentlich habe ich hier die Unit vorgestellt, weil ich etwas Feedback erwartet habe (in welcher Form auch immer), doch es kann auch an dem allgemeinen Titel gelegen haben. Was soll man sich schon unter "Massenobjektverarbeitung..." vorstellen?

Hier nun ein spezifisches Beispiel, welches vielleicht AccessQuery besser abbildet:

1. Erstellt eine neue Form
2. Bindet die AccessQuery-Unit ein (aktuelle Version hier)
3. Definiert die folgende Prozedur für das Click-Event der Form:

Delphi-Quellcode:
implementation

uses
   AccessQuery;

procedure TForm1.FormClick(Sender:TObject);
var
   NewLeft, NewWidth:Integer;
begin
   NewWidth:=Screen.WorkAreaWidth div 2;
   if Left <> 0 then
      NewLeft:=0
   else
      NewLeft:=Screen.WorkAreaWidth - NewWidth;

   TAQ.Take(Sender)
      .FinishAnimations
      .BoundsAnimation(NewLeft, 0, NewWidth, Screen.WorkAreaHeight, 500,
         TAQ.Ease(etMassiveQuadratic));
end;
Beim Klick auf die Form wird diese abwechselnd die linke oder die rechte Bidschirmhälfte animiert einnehmen. Das kompilierte Beispiel ist im Anhang.

Mittlerweile habe ich eine Dokumentation (TAQ-Klasse) auf meiner KiHiWi-Seite.
Angehängte Dateien
Dateityp: exe slidingform_273.exe (835,5 KB, 30x aufgerufen)
Waldemar Derr
  Mit Zitat antworten Zitat
hoika

 
Delphi 10.4 Sydney
 
#3
  Alt 7. Mai 2010, 11:16
Hallo,

vielleicht liegt es daran, dass keiner weiss,
wozu das gut sein soll



Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von rapante
rapante

 
Delphi XE2 Professional
 
#4
  Alt 7. Mai 2010, 11:56
Einfach mal die Beispiele anschauen, dann fällt einem schon was ein...

Also ich find's cool
  Mit Zitat antworten Zitat
dominikkv

 
Delphi 2007 Professional
 
#5
  Alt 7. Mai 2010, 12:57
Wow tolle Arbeit! Wenn ich jetzt noch ein Projekt hätte, in dem ich das benutzen könnte...
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

 
Delphi 11 Alexandria
 
#6
  Alt 7. Mai 2010, 13:26
Schönes Ding, aber leider unter Delphi 2007 nicht zu kompilieren wegen der anonymen Methoden
Detlef
  Mit Zitat antworten Zitat
WladiD

 
Delphi 10.4 Sydney
 
#7
  Alt 7. Mai 2010, 13:29
Ein jeder Mensch trachtet nach Beachtung und Anerkennung. Bei den Programmierern ist dieses Bedürfnis ^2 (wenn nicht gar höher).

Danke!

Wenn jemand von euch AccessQuery verwendet und nicht weiter kommt, fragt hier.
Waldemar Derr
  Mit Zitat antworten Zitat
WladiD

 
Delphi 10.4 Sydney
 
#8
  Alt 7. Mai 2010, 13:35
Zitat von DeddyH:
Schönes Ding, aber leider unter Delphi 2007 nicht zu kompilieren wegen der anonymen Methoden
Oh, das ist wirklich schade. Ich wusste nicht, ab welcher Version Delphi die anonymen Methoden unterstützt (die Hilfe erwähnt es nicht). Doch die sind ein Bestandteil des Konzepts.

Naja, jetzt weiss ich wenigstens, dass es unter 2007 nicht läuft. Wie sieht es mit 2009 aus? Konnte es jemand da kompilieren?
Waldemar Derr
  Mit Zitat antworten Zitat
Bebe

 
Delphi 10.1 Berlin Professional
 
#9
  Alt 7. Mai 2010, 15:45
Läßt sich einwandfrei mit D2009 kompilieren.

Gruß
Matze
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#10
  Alt 7. Mai 2010, 16:30
Aha.
Es handelt sich hier um eine Implementierung eines sogenannten Fluent Interface.
Das erste Mal, dass ich so etwas für Delphi sehe.
Delphi hat (leider) keine eingebaute Garbage Collection weshalb diese neue Technik sich hier kaum verbreitet.
Mal kucken wie das hier gemacht wird...
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:20 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