Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Visual LiveBindings - Chancen und Grenzen

  Alt 13. Feb 2013, 13:50
Für den Fall, dass Du es noch nicht kennst, mal mein Thread zu dem Thema: http://www.delphipraxis.net/172249-d...ml#post1196272

Das wesentliche Thema ist m.E. die Trennung von Businesslogik+Daten von der GUI und die Bindung der beiden Schichten.

Die Bindung der GUI-Controls untereinander (Edit.Enabled entspricht CheckBox.Checked) sollte m.E. maximal als Nebeneffekt angesehen werden.
Diese GUI-Bindungen lassen sich sehr einfach und übersichtlich auch mit Code in Eventhandlern umsetzen.

Die Bindungskomponenten (insb. die LB) können zu Problemen führen, die man mit "richtigem Code" nicht hat.

Bindungskonzepte bedingen die Untersuchung von Objekten und Eigenschaften anhand deren Namen. Wenn ich also an die Eigenschaft "Text" des Objektes "Edit1" binde, müssen die Eigenschaften des Objektes durchsucht werden, ob eines den Namen "Text" hat. Dann muss ggf. der zu übertragende Wert konvertiert werden und kann dann zugewiesen werden. In dieser Kette kann es diverse Probleme geben (wovon die LB regen Gebrauch machen).

Wenn man die Zuweisung im Code durchführt hat man u.U. ein paar Zeilen Quelltext zu schreiben, allerdings funktioniert die Zuweisung schnell und sicher.
Eine grafische Bindung von Controls im Designer wirkt natürlich auf den ersten Blick interessant, allerdings taugt das letztlich nicht wirklich für größere und komplexere reale Projekte.

Eine Eigenschaftsbindung ist vor allem dann sinnvoll, wenn die Eigenschaften dynamisch zur Laufzeit ausgewählt werden müssen. In anderen Fällen würde ich die Regelung im Projektcode vorziehen.

Bei den LB kommt als Problem hinzu, dass die Wertkonvertierungen oft nicht funktionieren (Checkbox und true/WAHR) und das das Löschen von gebunden Controls aus der IDE zu Zugriffsverletzungen führt.


Anders würde ich die Bindung der GUI-Controls an eine Datenschicht bewerten. Dort ist es sinnvoll, einen solchen Weg zu nutzen. Allerdings ist das Konzept der LB m.E. dafür ungeeignet.
Ich stelle mir eher vor, dass die Controls wissen müssen, WAS sie darstellen sollen und sich die Daten aus der Datenschicht (über einen Manager) abrufen.
Außerdem sollten Listen und Gitter nur die aktuell sichtbaren Daten abrufen (und nicht alle 500T Datensätze) und der Weg über die Prototype-Generatoren (oder wie das hieß) ist für mich auch nicht zweckmäßig.


In 1-2 Wochen will ich mal eine Preview meines Frameworks vorstellen, das m.E. der deutlich effektivere Weg ist (und auf Wunsch auch ein Binding zwischen GUI-Controls ermöglicht).
Bin ja schon mal echt gespannt...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat