Concepteur LiveBindings XE3 : Liaison de contrôles aux propriétés de composant

Evaris NGOUZO

Cet article est une traduction du billet de Jim Tierney concernant la liaison de contrôles aux propriétés de composants à l'aide du concepteur LiveBindings.

- Titre : Concepteur LiveBindings XE3 : Liaison de contrôles aux propriétés de composant

- Auteur : Evaris NGOUZO

- Parution : 7 octobre 2012

- Mise à jour : 28 décembre 2019

- Licence :

Sommaire

- I. Introduction

- II. Liaison des contrôles aux propriétés dans le concepteur LiveBindings

- III. Liaisons multiples

- IV. Liaisons interdites

- V. Liaison vers d'autres propriétés

- VI. Activation des propriétés de composants au LiveBindings

- VII. Activation de contrôles au LiveBindings

I - Introduction

Les contrôles simples peuvent être liés aux propriétés de composants. TEdit est un exemple de contrôle simple. TLabel.Text est un exemple de propriété de composant. Les contrôles peuvent être liés à la plupart des propriétés publiques de tout type de composant sur un formulaire.

II - Liaison des contrôles aux propriétés dans le concepteur LiveBindings

Après qu'un TEdit et un TLabel ont été déposés sur un formulaire FireMonkey, le concepteur LiveBindings représente le TEdit avec un membre « Text » et le TLabel avec également un membre « Text ».

Le concepteur LiveBindings peut être utilisé pour lier ces deux membres :

Dans le formulaire, vous constaterez que la valeur du TLabel a été copiée vers le TEdit. Lorsqu'un lien est initialisé, la valeur de la propriété du composant est copiée vers le contrôle afin de donner aux deux membres la même valeur au démarrage. Après l'initialisation, la valeur du contrôle sera copiée vers la propriété du composant à chaque fois que l'utilisateur modifiera la zone d'édition et pressera la touche entrée ou quittera la zone d'édition.

Dans le concepteur LiveBindings, la ligne reliant les composants représente une liaison de composants. Cliquer sur la ligne afin de sélectionner le composant qu'il représente dans l'inspecteur d'objets.

La propriété AutoActivate indique à quel moment le lien doit être initialisé lorsque l'application est exécutée. Cette propriété active également la liaison en phase conception.

La propriété InitialiizeControlValue peut être décochée afin de prévenir la valeur de propriété du composant d'être copiée vers le contrôle lorsque le lien est initialisé.

III - Liaisons multiples

Le concepteur LiveBindings peut être utilisé afin de connecter un seul contrôle à plusieurs propriétés de composant.

IV - Liaisons interdites

LiveBindings ne permet pas de lien entre propriétés de composant, telles que Label1.Text et Button1.Text.

Le concepteur LiveBindings signale cette interdiction de manière visuelle.

LiveBindings ne permet pas de lien direct entre deux contrôles d'entrée utilisateur, tels que Edit1.Text vers Edit2.Text. Afin d'aboutir au même résultat, lier les deux contrôles à un champ TPrototypeBindSource.

Les liaisons affichées dans cette image conserveront tous les membres « Text » synchronisés lorsque l'utilisateur modifiera l'une des zones d'édition et appuiera sur la touche « entrée » ou quittera la zone.

La propriété TPrototypeBindSource.RecordCount peut être définie à « 1 » lorsque TProtorypeBindSource est utilisé afin de fournir un champ intermédiaire.

V - Liaison vers d'autres propriétés

Afin de montrer d'autres propriétés de composant dans le concepteur LiveBindings, cliquer « … » afin d'ouvrir la boîte de dialogue « Bindable Members ».

La boîte de dialogue remplit une liste avec les propriétés retrouvées par scrutation des informations de type du composant. Certaines propriétés sont ignorées parce que leur type, tel que le type ensemble (set), n'est pas supporté par les expressions LiveBindings. Placer une coche sur les propriétés à afficher dans le concepteur LiveBindings.

La liaison à partir d'un contrôle vers « … » est un autre moyen d'avoir d'autres propriétés. À titre d'exemple, faire un glisser-déposer à partir du membre « IsChecked » vers « … » et sélectionner la propriété « WorkWrap ».

VI - Activation des propriétés de composants au LiveBindings

LiveBindings utilise les RTTI afin de lire et d'écrire les propriétés de composants. Ainsi aucun changement n'est requis pour rendre les propriétés d'un composant liables.

Afin de simplifier la liaison aux propriétés fréquemment utilisées, il existe une méthode d'enregistrement permettant d'indiquer quel membre afficher par défaut dans le concepteur LiveBindings. Par exemple, la méthode RegisterValuePropertyName() est utilisée afin d'enregistrer la propriété « Text » comme étant le membre par défaut d'un TLable FireMonkey, et la propriété « Caption » comme étant le membre par défaut du TLabel VCL. Voir Fmx.Bind.Editors.pas et Bcl.Bind.Editors.pas. RegisterValuePropertyName() se retrouve dans Data.Bind.Components.

VII - Activation de contrôles au LiveBindings

Les contrôles doivent implémenter l'observer ControlValue pour supporter la liaison de propriétés de composants. L'article précédent comporte des informations sur les observers, incluant le code d'un exemple de contrôle appelé TObservableTrackbar. TObservableTrackBar implémente l'observer ControlValue, et ainsi supporte la liaison vers les propriétés de composant. Voici un TObservableTrackBar lié à la propriété Width d'un TShape.