Website-Icon Embarcadero RAD Studio, Delphi, & C++Builder Blogs

Delphi-Ausdrücke über eine Bindings List-Komponente verwalten

bindingslist 03

Nachdem wir uns mit Bindungsausdrücken und deren Verknüpfung mit Komponenten befasst haben, gehen wir zu der Komponente über, die für die Verwaltung von Bindungsausdrücken bestimmt ist.


In den letzten Blogbeiträgen habe ich Delphis RTL-  Kernausdrucks-Engine  und die  Komponentenbindung behandelt . Jetzt können wir einen zusätzlichen Schritt machen und uns eine Schlüsselkomponente für die gesamte Bindungsarchitektur ansehen, die als BindingsList bezeichnet wird. Eine Bindungsliste ist eine Sammlung verschiedener Typen von Bindungsausdrücken, die in den Designern verwaltet werden.

Mit anderen Worten, die Ausdrücke und Komponentenbindungen, die ich im letzten Blogbeitrag im Quellcode definiert habe, können in den Designern (und Assistenten) der BindingsList-Komponente vollständig definiert werden. Ziehen Sie einfach eine Komponente dieses Typs in ein Formular plus einige visuelle Komponenten (in meinem Beispiel zwei Bearbeitungen, eine Drehbearbeitung und eine Fortschrittsleiste – siehe Bild unten).

The BindingsList component has a designer which allows to define a collection of bindings. Each binding can be picked using one of the many available options (way too many to explore in this article and primarily focused on data source and data field bindings). The two basic options I’m going to use here are TBindExpression and TBindExprItems.

Nachdem Sie eine dieser Bindungen ausgewählt haben, z Begriffsverwendung zur Bezugnahme auf die Zielkontrolle) und die zugehörigen Ausdrücke; zum anderen können Sie durch Doppelklick auf den Ausdruck im BindingList-Editor einen speziellen Ausdrucksdesigner öffnen, der wiederum über zusätzliche Item-Editoren und -Viewer verfügt:

In der obigen Abbildung sehen Sie, dass ich den Ausdruck mit einem Quell- und Zielsteuerelement verbunden, aber noch keinen Ausdruck definiert habe. Dies kann so einfach wie ein einzelner Eigenschaftsname oder eine komplexere Kombination von Werten und Ausdrücken sein und kann in den Ausdruckseigenschaften des Objektinspektors  für die Bindung oder im oben angezeigten speziellen Designer konfiguriert  werden. Der Designer bietet auch die Möglichkeit, verschiedene Ausdrücke auszuwerten und zu überprüfen.

Um zu den Ausdrücken zurückzukehren, können wir einfach Wert und Position für die Drehbearbeitung bzw. den Fortschrittsbalken verwenden. Beachten Sie, dass der Bindungsausdruck eine Richtung (standardmäßig Quelle zum Steuerelement) hat, die umgekehrt oder auch bidirektional sein kann.

Ich habe für die beiden Bearbeitungsfelder einen bidirektionalen Ausdruck verwendet, sodass durch die Eingabe eines von ihnen der Inhalt in das andere kopiert wird. In diesem zweiten Beispiel habe ich eine TBindExprItems-Bindung verwendet (aber ein regulärer Ausdruck hätte ausgereicht). Dies ist eine komplexere Bindung, bei der Sie Quelle und Steuerelement angeben (wie oben), aber eine Sammlung von Klar- und Formatausdrücken definieren, die mehrere Eigenschaften der Steuerelemente umfassen können. In diesem Beispiel ist die Zuordnung Text zu Text (bidirektional), wie Sie unten sehen können:

Bei all dem ist der einzige Delphi-Code, der in der Anwendung benötigt wird, ein Aufruf zur Neubewertung der Bindungen, wenn sich der Wert der Quelle ändert. Dies geschieht einfach, indem Sie die OnChange-Ereignisse der verschiedenen Steuerelemente verarbeiten und eine allgemeine Aktualisierung der Bindungen für das aktuelle Steuerelement (den Sender ) auslösen  :
[crayon-6762ca95ce9d0015563783/]
Dies ist die ganz einfache Anwendung in Aktion:

Jetzt fragen Sie sich vielleicht, wo all diese Konfigurationseinstellungen landen … aber wie die meisten anderen Design-Time-Konfigurationen in Delphi ist es kein Schwarz für eine Formulardatei, die Sie als Text anzeigen (und bearbeiten können, wenn Sie wissen, was Sie tun). . Sie können die Komponente auch aus dem Designer kopieren und als Text einfügen, wie ich es hier getan habe:
[crayon-6762ca95ce9db255468680/]
Das ist alles für den Moment, auch wenn ich merke, dass ich nur an der Oberfläche der Bindungsarchitektur gekratzt habe. Der nächste Schritt dieser Serie zu Ausdrücken und Bindungen sind die Visual Live Binding-Designer, die auf den bisher gezeigten Stücken aufbauen. Ich werde es das nächste Mal behandeln.

Die mobile Version verlassen