LiveBindings in RAD Studio
Nach oben zu Einführung in RAD Studio
LiveBindings ist eine Datenbindungsfunktion, die in RAD Studio vom VCL- und vom FireMonkey-Framework unterstützt wird. LiveBindings ist ein ausdrucksbasiertes Framework. Das bedeutet, dass Objekte anhand von Ausdrücken an andere Objekte oder Datenmengenfelder gebunden werden.
Übersicht über LiveBindings
LiveBindings basiert auf relationalen Ausdrücken, den Bindungsausdrücken, die entweder unidirektional oder bidirektional sein können. LiveBindings unterscheidet zwischen Steuerobjekten und Quellobjekten. Über Bindungsausdrücke können beliebige Objekte an beliebige andere Objekte gebunden werden, indem ein Bindungsausdruck mit einer oder mehreren Eigenschaften der Objekte, die verknüpft werden sollen, definiert wird. Sie können beispielsweise ein TEdit-Steuerelement an ein TLabel-Objekt binden, damit bei Änderungen des Textes im Eingabefeld die Beschriftung (TLabel) automatisch an den vom Bindungsausdruck berechneten Wert angepasst wird. Ein weiteres Beispiel ist das Binden eines Schieberegler-Steuerelements an eine Fortschrittsleiste, damit beim Bewegen des Schiebereglers die Fortschrittsanzeige erhöht oder verringert wird.
Auf dieselbe Art und Weise können Sie Verbindungen zu Datenmengenfeldern herstellen, eine oder mehrere Eigenschaften von verschiedenen Objekten ändern usw. Da LiveBindings weitergeleitet werden, können Sie sogar Eigenschaften von Objekten ändern, die mit anderen an ein Steuerobjekt gebundenen Objekten verbunden sind.
Erstellen von LiveBindings
LiveBindings werden hauptsächlich mit dem LiveBindings-Designer erstellt. Dieser Designer kann nur QuickBindings-Komponenten erstellen. Im Graphen können Bindungen von anderen Komponenten (wie TBindLink) angezeigt werden, aber Sie können die Endpunkte nicht wie bei QuickBinding-Komponenten verschieben.
Es gibt eine weitere Möglichkeit derartige Bindungen zu erstellen und zwar mit dem LiveBindings-Experten. Dieser Experte erstellt auch nur QuickBinding-Komponenten.
Der LiveBindings-Designer verwendet QuickBindings, um diese Art von Bindungen zu erstellen (was auch im Experten wiedergegeben wird):
- Verknüpfen eines Steuerelements, wie z.B. TEdit, mit einem Feld in einer Datenquelle
- Verknüpfen eines Steuerelements, wie z.B. TGrid, mit einer Datenquelle
- Verknüpfen eines Steuerelements, wie z.B. TEdit, mit einer Komponenteneigenschaft (wie z.B. TLabel.Text)
- Verknüpfen einer Komponenteneigenschaft mit einem Feld in einer Datenquelle
Ein Steuerelement kann nur mit einem Endpunkt verknüpft werden. Wenn ein TEdit-Steuerelement mit einem Feld verknüpft ist und Sie versuchen, das TEdit-Steuerelement mit einer Komponenteneigenschaft zu verknüpfen, wird die Verknüpfung mit dem Feld gelöscht. Auch eine Komponenteneigenschaft kann mit einem Endpunkt verbunden werden. Datenquellen und Daten-Member können mit mehreren Endpunkten verknüpft werden. Ein Feld kann beispielsweise mit einem TEdit und auch mit einem TLabel verknüpft werden. Davon wären zwei Bindungskomponenten betroffen.
Obwohl der LiveBindings-Designer nicht zulässt, dass ein Steuerelement mit zwei verschiedenen Komponenteneigenschaften verknüpft wird, können Sie diesen Effekt durch Verknüpfen des Steuerelements und den Komponenteneigenschaften mit einem Feld erzielen. Mit der Klasse TPrototypeBindSource kann ein Feld für diesen Zweck erstellt werden.
Der Begriff Verknüpfung, der in LiveBindings und der API-Dokumentation verwendet wird, beinhaltet, dass die Bindungen vom Benutzer vorgenommene Änderungen erkennen und automatisch Steuerelemente und Datenquellen als Reaktion auf die Benutzereingabe aktualisieren.
Verwendung von LiveBindings
Sie können LiveBindings in VCL- und FireMonkey-Anwendungen mithilfe des LiveBindings-Designers oder des LiveBindings-Experten verwenden. Der Experte wird über den Objektinspektor oder durch Rechtsklicken auf einzelne Komponenten im Formular aufgerufen (aber nur, wenn er im Dialogfeld Tools > Optionen > LiveBindings aktiviert wurde). Es gibt aber auch die schwierigere Möglichkeit, LiveBindings programmgesteuert in Konsolenanwendungen einzusetzen, wenn dies aus bestimmten Gründen erforderlich sein sollte. In den Themen Erstellen von LiveBindings, Neue LiveBinding oder LiveBindings-Experte erhalten Sie einen Überblick über das Erstellen von LiveBindings in RAD Studio.
- Tutorials zur Verwendung von LiveBindings in VCL- oder FMX-Anwendungen mit dem LiveBindings-Designer:
- Schnelles Erstellen von LiveBindings (QuickBindings) mit dem LiveBindings-Experten:
- Tutorial: Verknüpfen eines Steuerelements mit einem Feld
- Tutorial: Verknüpfen eines Steuerelements mit einer Komponenteneigenschaft
- Tutorial: Verknüpfen einer Eigenschaft einer Komponente mit einem Steuerelement
- Tutorial: Verknüpfen einer Eigenschaft einer Komponente mit einem Feld
- Tutorial: Erstellen einer Datenquelle
- Tutorials zur Verwendung von LiveBindings in VCL- oder FMX-Anwendungen mit dem LiveBindings-Experten:
- Tutorial: Verwendung von LiveBinding in VCL-Anwendungen (zeigt die Eigenschaftsbindung in VCL-Anwendungen)
- Tutorial: Verwendung von LiveBindings in FireMonkey-Anwendungen (zeigt die Eigenschaftsbindung in FireMonkey-HD-Anwendungen)
- Tutorial: Mit LiveBinding eine Anwendung ohne Quellcode erstellen (zeigt eine FireMonkey-HD-Anwendung, die mit LiveBindings erzeugt wurde)
- Tutorial: Programmgesteuerte Verwendung von LiveBinding (nur geeignet für Konsolenanwendungen oder manuelle Ausdrucksbearbeitung)
Visuelle Komponenten für LiveBindings
Die LiveBindings-Engine ist eine Laufzeitfunktion, aber eine Reihe von visuellen Komponenten ist zur Unterstützung der Erstellung von Bindungen zwischen Komponenten beim Entwurf in der Komponentenpalette enthalten. Überwiegend werden Sie jedoch Bindungen visuell mit dem LiveBindings-Experten erstellen.
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.
| Komponentenlogo | Komponentenname | Beschreibung |
| TBindSourceDB | Wird zum Erstellen von Bindungen mit Datenbanken verwendet. | |
| TPrototypeBindSource | Stellt eine Datenquelle zum Erstellen von Beispieldaten bereit, mit der Sie beginnen können, wenn Sie nicht bereits über Daten verfügen. Später können Sie diese Datenquelle durch reale Daten ersetzen. | |
| TBindingsList | Wird zur Aufnahme von Bindungslisten verwendet. | |
| TBindScope | Wird für Bindungen an Komponenten verwendet. | |
| TDataGeneratorAdapter | Ist ein Adapter für Datengeneratoren. | |
| TAdapterBindSource | Wird für die Arbeit mit Daten verwendet, die nicht in einer Datenbank gespeichert sind. Mit der Adapter-Eigenschaft wird die Datenquelle mit Daten verbunden, die nicht in einer Datenbank gespeichert sind, wie z.B. eine generische Kollektion von Objekten. | |
| TBindNavigator (FMX) | Wird beim Entwickeln von FMX-Anwendungen zur Iteration durch Datensätze in einer Datenmenge verwendet. | |
| TBindNavigator (VCL) | Wird beim Entwickeln von VCL-Anwendungen zur Iteration durch Datensätze in einer Datenmenge verwendet. |
Tipp: Wenn Sie mit dem ObjektinspektorLive-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 im Thema Bindungslisten.
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 XE3 | Beispiele. Der betreffende Ordner heißt Delphi\LiveBinding. Diese Beispiele sind in der folgenden Tabelle unterteilt 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 zur Aktualisierung des Verzeichnisses "Samples" auf die neueste SVN-Version finden Sie im Hilfethema Beispiel.
| FMX-LiveBindings-Beispiele | VCL-LiveBindings-Beispiele |
| BindComponentsExprProject | N/V |
| BindDBExprSampleProject | N/V |
| BindExpressionSampleProject | N/V |
| BindGridLinkFMXProject | BindGridLinkVCLProject |
| BindLinkFMXProject | BindLinkVCLProject |
| BindLinkFMXProject | BindLinkVCLProject |
| BindListFMXProject | BindListVCLProject |
| N/V | BindListEditVCLProject |
| N/V | BindLookupVCLProject |
In diesen Beispielen wird die Erstellung fortgeschrittener Anwendungen mit LiveBindings detailliert gezeigt.
Der Quelltext der LiveBindings-Beispiele in Ihrer Produktinstallation befindet sich in einem öffentlichen Subversion-Repository auf SourceForge:
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 |
| Data.Bind | Enthält Units mit Implementierungen für die LiveBindings-Komponenten |
Hinweis: Wenn Sie in 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.
Synchronisieren von Daten mit LiveBindings
Mit LiveBindings in RAD Studio können Sie verschiedene Daten, z.B. ein Listenfeld mit einem String-Gitter, synchronisieren, vorausgesetzt, dass beide dieselben Daten enthalten. Im Thema Synchronisieren von Daten mit LiveBindings finden Sie Informationen zum Synchronisieren von Daten mit den Eigenschaften Synch und * von bestimmten Komponenten im LiveBindings-Designer.
Erstellen von LiveBindings-fähigen Komponenten
Zum Aktivieren eines einfachen Steuerelements, wie TTrackBar, für die Verwendung mit LiveBindings, müssen zwei Voraussetzungen erfüllt sein. Erstens muss das Steuerelement die Observer-Unterstützung implementieren. LiveBindings sind zum Abonnieren von Steuerelementbenachrichtigungen auf Observer angewiesen. Zweitens muss der Steuerwertname (z.B.: Position für eine TTrackBar-Komponente) registriert werden. Mit dem Steuerwertnamen können LiveBindings-Komponenten Ausdrücke zum Abrufen und Setzen des Wertes des Steuerelements erzeugen.
Weitere Informationen zum Erstellen von Komponenten für LiveBindings finden Sie im Tutorial Erstellen von LiveBindings-fähigen Komponenten.
Siehe auch
- LiveBindings-Designer
- Erstellen von LiveBindings
- LiveBindings-Experte
- LiveBindings-Methoden (Dialogfeld)
- Das Dialogfeld "Ausgabekonverter"
- Das Dialogfeld "LiveBindings - Ergebnis des Ausdrucks"
- Das Dialogfeld "LiveBindings-Spalteneditor"
- Neue LiveBinding
- Synchronisieren von Daten mit LiveBindings
- Bindungslisten
- Editor für Bindungsausdrücke
- LiveBindings und Aktionslisten
- Objektinspektor
- Neue Konsolenanwendung (C++)
- VCL-Formularanwendung
- HD-FireMonkey-Anwendung
- iOS-Codefragmente
Beispiele
Tutorials
- Tutorial: Verwendung von LiveBinding in VCL-Anwendungen
- Tutorial: Verwendung von LiveBindings in FireMonkey-Anwendungen
- Tutorial: Mit LiveBinding eine FireMonkey-Anwendung ohne Quellcode erstellen
- Tutorial: Programmgesteuerte Verwendung von LiveBinding
- Tutorial: Verknüpfen von Steuerelementen mit dem LiveBindings-Designer
- Tutorial: Verwenden von TPrototypeBindSource und dem LiveBindings-Designer
- Tutorial: Verwenden von LiveBindings und Datenmodulen mit der Metropolis-UI
- Tutorial: Füllen von ListBox-Steuerelementen über LiveBindings auf iOS
