LiveBindings in RAD Studio
Nach oben zu Einführung in RAD Studio
LiveBindings ist eine Datenbindungsfunktion, die in RAD Studio von der VCL und von FireMonkey unterstützt wird. LiveBindings ist ausdrucksbasiert. Das bedeutet, dass Objekte anhand von Ausdrücken über ihre Eigenschaften aneinandergebunden werden.
Inhaltsverzeichnis |
Übersicht über LiveBindings
LiveBindings basiert auf relationalen Ausdrücken, den Bindungsausdrücken, die entweder unidirektional oder bidirektional sein können. LiveBindings unterscheiden zwischen Steuerobjekten und Quellobjekten. Über Bindungsausdrücke kann jedes Quellobjekt an sich selbst (es wird zum Quell- und Steuerobjekt) oder an ein anderes Steuerobjekt gebunden werden. Dies erfolgt einfach durch Definition eines Bindungsausdrucks, der eine oder mehrere Eigenschaften der zu bindenden Objekte betrifft. Sie können beispielsweise ein TEdit-Steuerelement an ein TLabel-Objekt binden, damit bei Änderungen des Textes in dem Eingabefeld die Beschriftung des Labels automatisch an den von Ihrem Bindungsausdruck berechneten Wert angepasst wird. Ein weiteres Beispiel ist das Binden eines Schieberegler-Steuerelements an eine Fortschrittsleiste, damit beim Bewegen des Schiebereglers der Fortschritt erhöht oder verringert wird.
Auf dieselbe Art und Weise können Sie Verbindungen zu Datenbanken herstellen, eine oder mehrere Eigenschaften von verschiedenen Objekten ändern usw. Da LiveBindings übernommen werden, können Sie sogar Eigenschaften von Objekten ändern, die mit anderen an ein Steuerobjekt gebundenen Objekten verbunden sind.
Verwendung von LiveBindings
LiveBindings können in VCL- und FMX-Anwendungen mit Hilfe des Objektinspektors und der visuellen LiveBindings-Komponenten verwendet werden. Es gibt aber auch eine Möglichkeit, LiveBindings programmgesteuert in Konsolenanwendungen zu verwenden.
In den folgenden Tutorials werden die Grundlagen der Verwendung von LiveBindings gezeigt:
- Tutorial: Verwendung von LiveBinding in VCL-Anwendungen (veranschaulicht die Eigenschaftsbindung für VCL-Anwendungen)
- Tutorial: Mit LiveBinding eine Anwendung ohne Quellcode erstellen (zeigt eine mit LiveBindings erzeugte FireMonkey-HD-Anwendung)
- Tutorial: Programmgesteuerte Verwendung von LiveBinding (nur geeignet für Konsolenanwendungen oder manuelle Ausdruckbearbeitung)
LiveBindings können verwaltet oder unverwaltet sein. Verwaltete Bindungen werden automatisch ausgewertet, wenn in dem Eingabeausdruck ein Objekt oder eine Eigenschaft geändert wird. Wenn beispielsweise der Eingabeausdruck die Eigenschaft Text einer Eingabefeldkomponente namens Edit1 referenziert, wird die Bindung ausgewertet, wenn die Ausdrucks-Engine über eine Änderung von Edit1 informiert wird. TBindingList.Notify wird zur Benachrichtigung der Ausdrucks-Engine aufgerufen. Der erste Parameter für Notify() ist das Objekt (in diesem Beispiel Edit1), und der zweite Parameter ist die betroffene Eigenschaft. Der Eigenschaftparameter kann leer sein, damit alle das Objekt referenzierende Bindungen ausgewertet werden.
RAD Studio verfügt über kein Benachrichtigungssystem, das die Ausdrucks-Engine über Änderungen von Objekten oder Eigenschaften informiert. In den Beispielanwendungen wird Notify in den Ereignisbehandlungsroutinen aufgerufen. Typischerweise wird mit dem Parameter Sender der Ereignisbehandlungsroutine BindingsList1.Notify(Sender, ''); aufgerufen. Auf diese Weise können Sie mit einer Ereignisbehandlungsroutine Benachrichtigungen von vielen Steuerelementen behandeln. Die Beispielanwendung SynchControlsSampleProject (die auch in der Tabelle unten aufgeführt ist) zeigt die Implementierung der Benachrichtigung.
TBindExpression und TBindExprItems sind LiveBindings-Komponenten, die verwaltete Bindungen unterstützen. Setzen Sie dazu die Eigenschaft Managed. Diese beiden Komponenten verfügen über eine weitere Eigenschaft, die sich auf Benachrichtigungen auswirkt. Wenn die Eigenschaft NotifyOutputs True ist, sendet die Ausdrucks-Engine automatisch eine Benachrichtigung an das Ausgabeobjekt oder die Ausgabeeigenschaft, die bei der Auswertung der Bindung geändert wird.
Keine der anderen Bindungskomponenten verwendet verwaltete Bindungen. Sie verwenden unverwaltete Bindungen, die immer explizit ausgewertet werden.
Die Komponenten TBindLink, TBindListLink und TBindGridLink und die eng damit verbundenen FireMonkey TBindDB*Link-Komponenten binden Daten, wie ein TDataSet-Feld, an Steuerelemente, wie z.B. TEdit. Anstatt mit dem Abhängigkeitsgraphen der Ausdrucks-Engines Steuerelemente und Daten synchron zu halten, empfangen diese Komponenten Benachrichtigungen von den Datenquellen und Benachrichtigungen von den Steuerelementen (mit der neuen TObserver-API). Das System ist eine Neuorganisation des VCL-DB-sensitiven Steuerelementdesigns, was mehr als das einfache Synchronisieren von zwei Eigenschaften ausführen kann. Damit ein Steuerelement mit diesen Komponenten arbeiten und Dateneingaben unterstützen kann, muss es die TObserver-API implementieren. Schreibgeschützte Steuerelemente wie TLabel müssen die TObserver-API nicht unterstützen. Da TBindLink so konzipiert wurde, dass es wie VCL-DB-sensitive Steuerelemente arbeitet, kann es gut mit Formularen eingesetzt werden, die VCL-DB-sensitive Steuerelemente verwenden, und bietet den Vorteil der Unterstützung von komplexen Ausdrücken und VCL-Standardsteuerelementen.
TBindPosition ist eine weitere Komponente, die Steuerelementbenachrichtigungen mit der TObserver-API empfängt. Diese Komponente wird mit Komponenten verwendet, die eine Position haben, wie TListBox, Vcl.StdCtrls.TScrollBar oder TTracker. Siehe das BindLookupVCLProject-Beispiel, das die Verwendung von TBindPosition zeigt.
Es gibt zwei weitere Komponenten, die unverwaltete Bindungen verwenden. Mit TBindList und TBindGridList werden Listen oder Tabellen gefüllt. Zwei Bindungskomponenten können gemeinsam für dasselbe Steuerelement eingesetzt werden. Daher kann beispielsweise mit einer TBindList- zusammen mit einer TBindDBList-Komponente ein TListBox-Steuerelement gefüllt werden, das ein TDataSet-Feld bearbeiten kann.
Beispiele für LiveBindings
Es gibt eine Reihe von LiveBindings-Beispielanwendungen, die zusammen mit RAD Studio ausgeliefert werden. Sie finden diese Beispiele durch Auswählen von Start | Programme | Embarcadero RAD Studio XE2 | Beispiele. Der betreffende Ordner heißt Delphi\LiveBinding. Diese Beispiele sind in der folgenden Tabelle nach Kategorien (FMX oder VCL) aufgeführt. Einige der Beispielanwendungen sind für FMX und VCL verfügbar, andere nur für eine der beiden Kategorien. Die Hauptprojektgruppe für alle LiveBindings-Beispiele hat den Namen BindSamplesGroup.groupproj.
Tipp: Informationen zum Aktualisieren des Beispielverzeichnisses auf die neueste SVN-Version finden Sie im Hilfethema Sample.
| FMX-LiveBindings-Beispiele | VCL-LiveBindings-Beispiele |
| BindComponentsExprProject | N/V |
| BindDBExprSampleProject | N/V |
| BindExpressionSampleProject | N/V |
| SynchControlsSampleProject | N/V |
| BindGridLinkFMXProject | BindGridLinkVCLProject |
| BindLinkFMXProject | BindLinkVCLProject |
| BindLinkFMXProject | BindLinkVCLProject |
| BindListFMXProject | BindListVCLProject |
| N/V | BindListEditVCLProject |
| N/V | BindLookupVCLProject |
In diesen Beispielen wird detailliert die Erstellung fortgeschrittener Anwendungen mit LiveBindings gezeigt.
Der Quelltext der LiveBindings-Beispiele in Ihrer Produktinstallation befindet sich in einem öffentlichen Subversion-Repository auf SourceForge:
Visuelle Komponenten für LiveBindings
Die LiveBindings-Engine ist eine Laufzeitfunktion, aber eine Reihe von visuellen Komponenten sind zur Unterstützung der Erstellung von Bindungen zwischen Komponenten beim Entwurf in der Komponentenpalette enthalten.
In der Komponentenpalette befinden sich auf der Registerkarte LiveBindings die folgenden Komponenten, die Sie per Drag&Drop auf einem Formular (VCL oder FMX) platzieren können:
- TBindingsList zur Aufnahme von Bindungslisten
- TBindScope für Bindungen an Komponenten
- TBindScopeDB für Bindungen an Datenbanken
Tipp: Wenn Sie mit dem Objektinspektor Live-Bindungen zwischen Komponenten erstellen, wird die entsprechende LiveBindings-Komponente (TBindingsList) automatisch auf dem Formular platziert. Diese Komponente enthält eine Liste aller in Ihrer Anwendung verfügbaren Bindungen. Weitere Informationen über Bindungslisten finden Sie in dem Thema Bindungslisten.
API-Referenz zu LiveBindings
Die folgenden Units sind Teil der LiveBindings-Engine. Die Dokumentation in den entsprechenden Hilfethemen enthält Informationen über die Verwendung der LiveBindings-API.
| Unit-Name | Enthält |
| System.Bindings.CustomScope | Benutzerdefinierte gültigkeitsbereichsbezogene Klassen |
| System.Bindings.CustomWrapper | Benutzerdefinierte Wrapper-bezogene Klassen |
| System.Bindings.EvalProtocol | Von der Engine für Wrapper, Gültigkeitsbereiche und andere interne Strukturen verwendete Interfaces |
| System.Bindings.Expression | Bindungsausdrucksbezogene Klassen |
| System.Bindings.ExpressionDefaults | Standardverhalten für Bindungsausdrücke |
| System.Bindings.Factories | Generatoren für Ausdrücke, Manager und Gültigkeitsbereiche |
| System.Bindings.Helper | Tools für das programmgesteuerte Erstellen von Bindungsausdrücken und Benachrichtigungen |
| System.Bindings.Manager | Bindungsmanagerbezogene Implementierungen |
| System.Bindings.ManagerDefaults | Standardverhalten für Bindungsmanager |
| System.Bindings.Methods | Steuerung von Methoden, die im Skript verwendet werden können |
| System.Bindings.Outputs | Tools zur Steuerung von Ausdrucksausgaben |
Hinweis: Wenn Sie mit C++Builder Konsolenanwendungen mit LiveBindings entwickeln, müssen Sie den C++-Compiler explizit anweisen, die RTTI-Informationen für die Klassen in Ihrem Projekt zu erzeugen. Fügen Sie dazu die Direktive#pragma explicit_rtti methods()am Anfang Ihres Projekts ein, wie im Tutorial "Programmgesteuerte Verwendung von LiveBinding" gezeigt. Weitere Informationen über die Direktive#pragma explicit_rtti methods()finden Sie im Hilfethema #pragma explicit_rtti.
Siehe auch
- Erstellen von LiveBindings
- Das Dialogfeld "Neue LiveBinding..."
- LiveBindings-Methoden (Dialogfeld)
- Das Dialogfeld "Ausgabekonverter"
- Das Dialogfeld "LiveBindings-Ausdrucksergebnis"
- Das Dialogfeld "Neue DB-Verknüpfung"
- Das Dialogfeld "LiveBindings-Spalteneditor"
- Bindungslisten
- Editor für Bindungsausdrücke
- Objektinspektor
- Neue Konsolenanwendung
- VCL-Formularanwendung
- FireMonkey-HD-Anwendung
- Referenz der FMX-RTL-VCL-Bibliotheken