![]() |
Delphi-LiveBindings (allgemein)
Hallo zusammen,
ich beschäftige mich im Moment mit den LiveBindungs von Delphi. Da ich gerade ein neues größeres VCL-Projekt anfange, wollte ich auch eine neue Technik verwenden. Ich habe zu Delphi-LiveBindings schon ein paar Video-Tutorials gesehen und durch vieles Probieren einiges verstanden. Trotz dessen habe ich aber noch ein paar Fragen, wo ich noch nicht so richtig eine Antwort drauf gefunden habe. Hier mal meine Liste mit ersten Fragen :
|
AW: Delphi-LiveBindings (allgemein)
1. Das Livebindung speichert nichts in einer Datenbank. Es kann aber ein DataSet über einen entsprechenden Adapter befüllen, bzw. auslesen.
2. Wie bisher, da gibt es keine Unterschiede. Das DataSet kann Daten wieder in die DB schreiben 3. Nein 4. Die BindList und die Scopes sollten auf dem Formular liegen. Theoretisch müsste das funktionieren, aber sinnvoll ist es nicht, denn das Binding erfolgt ja gegen Controls und warum sollte ich die trennen. Die Livebindings gehören zum Visualisieren und damit auf/zur View 5. Ja, eine entsprechende Anwendung mit entsprechender Trennung sieht wie folgt aus: Datenmodul: Connection zur Datenbank (eigentlich ein Singleton) Service: Kennt das Datenmodul und fragt die DB ab (Query). Die Kapselung zur Anwendung über ein DataSetProvider Presenter: Hat einen eigene Service-Instanz und holt sich von diesem die Provider und übergibt diese an ein ClientDataSet. Das DataSet wird an die View übergeben View: Die View nimmt vom Presenter das DataSet entgegen und zeigt den Inhalt an (z.B. klassisch per DBGrid o.ä., oder per Livebinding mit BindscopeDB) Das einzige was für FMX geändert werden muss ist die View. Und wenn der Zugriff auf die DB geändert werden soll (andere DB, andere Komponenten) dann wird nur der Service und das Datenmodul gewechselt (angepasst) Ich kann nächste Woche mal eine Demo-Anwendung zeigen, die dann ein und das selbe mit unterschiedlichen Zugriffen (DataSet, Objekte mORMot) sowie VCL und FMX. Genau das baue ich im Moment zusammen. |
AW: Delphi-LiveBindings (allgemein)
Hallo Sir Rufo,
danke erstmal für Deine Antworten. Zitat:
Zitat:
Zitat:
Im Moment würde ich das Live-Binding nur dazu einsetzen um zum Beispiel ListBoxen oder ComboBox mit Werten aus Referenztabellen zu füllen. Den Rest würde ich wie immer machen. Was ich aber nicht für sehr sinnvoll halte. |
AW: Delphi-LiveBindings (allgemein)
Der Adapter ist z.B. BindScopeDB für ein DataSet oder BindScope für ein Objekt.
In XE3 gibt es auch Adapter die auch Adapter im Namen haben :) |
AW: Delphi-LiveBindings (allgemein)
Und wie mache ich das über ein BindScopeDB ? Ich habe da keine entsprechende Option gefunden.
|
AW: Delphi-LiveBindings (allgemein)
Hier mal ein Link wo das Step-by-Step erklärt wird (inkl. Bildern) :)
![]() EDIT: Allerdings mit Ausnahme der Bindung der BindScopeDB an ein StringGrid, das ist in XE2 VCL sehr umständlich. |
AW: Delphi-LiveBindings (allgemein)
Hallo Sir Rufo,
danke für das Tutorial. Es hat mir sehr weitergeholfen, die LiveBindungs zu verstehen. Edit: Ich habe es dank dem Tutorial hinbekommen, dass ich bestehende Datensätze ändern kann, aber leider keinen neuen Datensatz anlegen. Wie kann man beim Live-Binding unterscheiden zwischen neuen Datensatz und bestehenden Datensatz ? Gibt es dazu irgendwelche Tutorials ? |
AW: Delphi-LiveBindings (allgemein)
Es gibt da einen Navigator, den du dir dazuklatschen kannst und damit legst du einen neuen an.
Wie gesagt es ist eigentlich fast genau wie beim DBGrid (Ausnahme das An-/Einfügen von neuen Datensätzen). Das Binding ist ausschließlich für die Verbindung zwischen DatenContainer und Controls. Der Rest ist genau so zu handhaben wie nach alter Väter Sitte. Ein Button mit
Delphi-Quellcode:
fügt einen neuen Datensatz an und das DBGrid hat diesen Satz auch als aktiv markiert. Genau so bei den Livebindings.
MyDataSet.Append;
Gerade bei der Verwendung von DataSets sieht man, dass bei der Verwendung von Livebindings keine extra speziellen DB-Controls benötigt werden (DBEdit, DBGrid, etc.). |
AW: Delphi-LiveBindings (allgemein)
Hallo zusammen,
ich habe mich jetzt 2 Tage intensiv mit dem LiveBinding von Delphi XE2 beschäftigt. Mein erstes Fazit ist : (alle Angaben ohne Gewähr) Das LiveBinding bietet eine hervorragende Grundlage um wirklich die Daten von der GUI zu trennen. Wenn man einmal die Grundtechnik kapiert hat, kann man ganz schnell und einfach eine kleine Anwendung zusammenklicken ohne nur eine Zeile Code geschrieben zu haben. Leider musste ich feststellen, sofern ich keinen Fehler gemacht habe, dass noch nicht alle eigenen Delphi-Komponenten voll unterstützt werden, geschweige denn Komponenten von anderen Herstellern. Meine absolute Lieblingsfehlermeldung war "Error in BindLink_1. No observer support for <Komponentenname>". Die Fehlermeldung kam immer dann, wenn eine "Parse Expression" hinterlegt war. Dazu gehörten zum Beispiel TAdvMemo, TAdvDateTimePicker und TDateTimePicker. Komponenten wie TAdvEdit, TEdit, TLabel u.s.w. funktionieren wunderbar. Deshalb werde ich jetzt noch auf die Antwort einer Supportanfrage warten und dann entscheiden, ob ich für das neue Projekt die LiveBindings einsetze oder ob ich meine bewährte Variante mit den Klassen einsetze. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz