Home » Tutorials » Object Pascal/RTL » Visual Live Bindings

Visual Live Bindings

Anzeige von Datenbankinhalten

Besonders hilfreich sind die Visual LiveBindings in Verbindung mit Datenbankinhalten. Das wollen wir uns an einem kleinen Beispiel anschauen. Dazu erstellen wir wieder eine neue VCL-Anwendung und setzen die Komponente TClientDataSet darauf. Über die Property Filename lässt sich im Objektinspektor eine lokale Datenbankdatei auswählen, die dann in der Anwendung als Datenquelle verwendet wird. In den Delphi-Samples werden für solche Experimente bereits die legendären Fishfacts, eine Datensammlung zu Fischen, mitgeliefert. Standardmäßig liegt diese Datei unter C:UsersPublicDocumentsRAD Studio10.0SamplesLiveBindingscommonfishfacts.cds.
Nun müssen wir nur noch die Eigenschaft „Active“ auf „true“ setzen – schon steht die Datenbankverbindung. Nun lassen wir uns den LiveBindings-Designer anzeigen und sehen darin bereits einen Kasten für das ClientDataSet gefüllt mit einigen Feldern der Datenbank:

clientdataset.png

Nun benötigen wir Komponenten, in denen wir die Daten darstellen wollen. Beginnen wir einfach mit einem TEdit, in dem der Speziesname des Fischs dargestellt werden soll. Wir setzen also ein TEdit auf das Fenster und ziehen im LiveBindings-Designer eine Linie von „Species Name“ von ClientDataSet1 zu „Text“ von Edit1.
Nun passieren einige Dinge, die wichtig zu beachten sind:

  • In dem Edit-Feld wird direkt der Wert des ersten Datensatzes dargestellt (weil die Verbindung zur Datenbank aktiv ist – Eigenschaft „Active“ des ClientDataSet).
  • Es wird eine neue Komponente vom Typ TBindingsList erzeugt. Das kennen wir ja aus den bisherigen Beispielen. In der BindingsList sind alle Bindings zu finden. In diesem Fall genau eine, nämlich die Verbindung zwischen ClientDataSet1 und Edit1.
  • Zusätzlich gibt es eine weitere neue Komponente vom Typ TBindSourceDB. Diese hat in der Property „DataSet“ eine Verbindung zum ClientDataSet1. In der Designer-Darstellung ist ClientDataSet1 jetzt auch ein Teil von BindSourceDB1.
  • Die Verbindung zwischen ClientDataSet1 und Edit1 hat im Designer an jedem Ende eine Pfeilspitze, ist also bidirektional. Bei Datenbank-Verbindungen ist das sinnvoll, da die Daten so nicht nur angezeigt, sondern auch editiert werden können. Wollte man das ändern, müsste man den Pfeil im Designer auswählen und dann im Objektinspektor die Property „Direction“ verändern.

Es gibt noch einen einfacheren Weg, Komponenten zur Darstellung auf das Formular zu bringen. Dazu klickt man im LiveBindings-Designer mit der rechten Maustaste auf eine Property und wählt „Mit neuem Steuerelement verknüpfen…“. Es er scheint ein kleiner Dialog, der passende Komponenten zur Auswahl anbietet. Nach Bestätigung wird diese Komponente auf dem Formular angezeigt und direkt eine Verbindung hergestellt.

Wenn wir die Anwendung jetzt starten, sehen wir Daten aus der Datenbank. Allerdings nur vom ersten Datensatz. Es gibt noch keine Möglichkeit, zwischen den Datensätzen zu wechseln, neue hinzuzufügen oder zu löschen.
All diese Funktionalitäten bietet der Navigator, den wir ganz einfach hinzufügen können: Wir klicken mit der rechten Maustaste auf die BindSourceDB-Komponente und wählen „Navigator hinzufügen“. Schon haben wir eine TBindNavigator-Komponente auf unserem Fenster, die mit BindSourceDB1 verbunden ist. Über den Objektinspektor lassen sich einzelne Buttons des Navigators ein- und ausblenden (VisibleButtons) oder die Ausrichtung ändern (Orientation).
Ansonsten reicht es aber, die Anwendung einfach wieder zu starten – und schon können wir alle Daten sehen, die sich in der Datenbank befinden. Und das wohlgemerkt ohne den Einsatz einer einzigen DB-Komponente wie z.B. TDBEdit, sondern allein mit Standard-Controls, die über die LiveBindings-Engine an das ClientDataSet angebunden worden sind. Für die Verwendung von DBExpress gibt es übrigens die Komponente TBindSourceDBX, die in diesem Fall als Ersatz für die hier verwendete TBindSourceDB verwendet werden muss.

dbapp.png

Download Beispielprojekt