AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Delphi-LiveBindings (allgemein)

Ein Thema von RWarnecke · begonnen am 26. Okt 2012 · letzter Beitrag vom 28. Okt 2012
Antwort Antwort
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.405 Beiträge
 
Delphi XE8 Enterprise
 
#1

Delphi-LiveBindings (allgemein)

  Alt 26. Okt 2012, 20:36
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 :
  1. Ist das LiveBinding nur dazu da um Daten anzuzeigen oder kann ich es auch nutzen um Daten zum Beispiel in eine Datenbank zu schreiben ?
  2. Wenn Frage 1 mit ja zum Thema 'Schreiben' beantwortet wird, wie funktioniert das ganze dann ?
  3. Muss ich wirklich für jede Query eine eigene BindList erstellen ?
  4. Ich habe die Komponenten TBindScopeDB und TBindList auf ein DataModul gelegt. Warum konnte ich dann trotz richtigem LiveBindung keine Daten in meiner Eingabekomponete in einer anderen Unit anzeigen lassen ? Das Datenmodul war über Uses in meiner Form eingebunden. Erst wie die beiden Komponenten TBindScopeDB und TBindList auf der Form mit der Eingabekomponente waren hat es funktioniert.
  5. Wenn ich jetzt im neuen VCL-Projekt zum Beispiel alle Berechnungen und oder Datenbankabfragen in seperate Units packe und mit den LiveBindings arbeite, dann wäre es doch ein leichtes eine entsprechende Firemonkey-Anwendung zu erstellen ? In der Firemonkey-Anwendung benutze ich dann nur die entsprechenden LiveBindungs und kann so auf die Daten zugreifen und anzeigen lassen. Habe ich das Konzept von LiveBinding so richtig verstanden ?
Das sind erstmal alle Fragen.
  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
 
#2

AW: Delphi-LiveBindings (allgemein)

  Alt 26. Okt 2012, 21:49
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.
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
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.405 Beiträge
 
Delphi XE8 Enterprise
 
#3

AW: Delphi-LiveBindings (allgemein)

  Alt 26. Okt 2012, 22:26
Hallo Sir Rufo,

danke erstmal für Deine Antworten.

1. Das Livebindung speichert nichts in einer Datenbank. Es kann aber ein DataSet über einen entsprechenden Adapter befüllen, bzw. auslesen.
In wie fern über einen entsprechenden Adapter ?
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
Ok, habe ich verstanden.
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.
Eine entsprechende Demo-Anwendung würde mir sehr weiterhelfen.

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.
  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
 
#4

AW: Delphi-LiveBindings (allgemein)

  Alt 26. Okt 2012, 23:01
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
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
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.405 Beiträge
 
Delphi XE8 Enterprise
 
#5

AW: Delphi-LiveBindings (allgemein)

  Alt 26. Okt 2012, 23:16
Und wie mache ich das über ein BindScopeDB ? Ich habe da keine entsprechende Option gefunden.
  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
 
#6

AW: Delphi-LiveBindings (allgemein)

  Alt 27. Okt 2012, 00:41
Hier mal ein Link wo das Step-by-Step erklärt wird (inkl. Bildern)

http://members.adug.org.au/2012/01/05/livebindings-02/

EDIT: Allerdings mit Ausnahme der Bindung der BindScopeDB an ein StringGrid, das ist in XE2 VCL sehr umständlich.
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)

Geändert von Sir Rufo (27. Okt 2012 um 00:47 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.405 Beiträge
 
Delphi XE8 Enterprise
 
#7

AW: Delphi-LiveBindings (allgemein)

  Alt 27. Okt 2012, 11:05
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 ?

Geändert von RWarnecke (27. Okt 2012 um 11:32 Uhr)
  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
 
#8

AW: Delphi-LiveBindings (allgemein)

  Alt 27. Okt 2012, 13:09
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 MyDataSet.Append; fügt einen neuen Datensatz an und das DBGrid hat diesen Satz auch als aktiv markiert. Genau so bei den Livebindings.

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.).
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
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.405 Beiträge
 
Delphi XE8 Enterprise
 
#9

AW: Delphi-LiveBindings (allgemein)

  Alt 28. Okt 2012, 18:03
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.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:

Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2017 by Daniel R. Wolf