Concepteur LiveBindings XE3 : lier un champ à une liste de recherche
Publié le 17 octobre 2012
Par
Evaris NGOUZO
Ceci est la traduction du
billet de Jim Tierney sur le LiveBindings visuel
avec XE3 portant sur la liaison d'une liste de rechercher à une source de données
I. Introduction
II. Création de l'application
I. Introduction
Une liste de recherche est utilisée lorsque l'on désire présenter
à l'utilisateur des données plus significatives par rapport aux données
effectivement manipulées. Une liste de recherche remplit donc un
contrôle de liste avec des "données d'affichage", en lieu et place
des "données réelles".
Nous pouvons configurer deux composant de type TPrototypeBindSource
afin de simuler une situation faisant appel à une liste de recherche.
Le processus qui suit diffère de l'article précédent par l'usage
du champ "Colors" en plus du champ "ColorsName". Le champ "Colors"
contient la représentation numérique d'une couleur.
II. Création de l'application
Création de la source de données (DataSource).
- Créer une nouvelle application VCL
- Déposer un composant TPrototypeBindSource sur le formulaire
- Dans l'inspecteur d'objets, définir la propriété RecordCount du composant à 10
- Ajouter un champ *Colors* au composant
Création de la source de données de remplisage de la liste (FillDataSource)
- Déposer un second TPrototypeBindSource sur le formulaire
- Dans l'inspecteur d'objets, renommer celui-ci en "PrototypeBindSourceFill"
- Ajouter les champs *Colors* et *ColorsNames* au composant
- Décocher "Shuffle" et "Repeat" afin de générer une liste ordonnée de valeurs uniques
Déposer ensuite un TListBox sur le formulaire
Afficher le concepteur LiveBinding à l'aide de la commande de menu
"Voir/Concepteur LiveBindings"
Pour plus de simplicité, renommer les deux champs du composant PrototypeBindSourceFill
en AColor et AColorName. Pour y arriver, sélectionner tour à tour
les deux champs dans le concepteur LiveBindings et utiliser l'inspecteur
d'objets pour changer leur nom.
Dans l'optique de créer une liste de recherche, la "source de données
de remplissage" doit fournir un "ValueField" et un "DisplayField"
qui sont respectivement les champs utilisés comme valeur manipulée
et valeur affichée.
Ces deux champs sont donc utilisés pour construire un dictionnaire
servant à faire correspondre une valeur réelle à une valeur
d'affichage.
Dans notre exemple, AColor est le "champ valeur" et AColorName est
le "champ affiché". Une valeur numérique de couleur dans le champ
AColor peut alors être utilisée pour rechercher le nom de la couleur
correspondante dans le champ ColorName.
Dans le concepteur LiveBindings, réaliser les trois connections
suivantes afin de créer une liste de recherche :
- Lier le champ "Color1" du composant PrototypeBindSource1 à la propriété "SelectedText" du composant ListBox1
- Lier le champ "AColorName" du composant PrototypeBindSourceFill à la propriété "ItemText" du composant ListBox1
- Lier le champ "AColor" du composant PrototypeBindSourceFill à la propriété "LookupData" du composant ListBox1
Si tout est lié correctement, l'on constate que la ListBox1 est
remplie dans le concepteur VCL.
L'élement de liste "Darkgreen" est sélectionné parce que la valeur
du champ "Colors1" dans le premier enregistrement du composant
PrototypeBindSource1 est associée à la valeur "Darkgreen" dans le
composant PrototypeBindSourceFill.
Ajouter un navigateur en faisant un clic droit sur le composant
PrototypeBindSource1 et en choisissant l'élément de menu
"Ajouter un navigateur".
Notre mini application est maintenant prête à l'exécution.
Remarquez que l'on a également ajouté un composant TLabeledEdit et
un TShape.
Le composant TLabeledEdit permet d'afficher la valeur du champ
AColor du PrototypeBindSource1 en tant que nombre.
Le composant TShape permet quant à lui de visualier la valeur du
même champ sous forme de couleur.
Voici un aperçu final de notre concepteur LiveBinding.