[FMX] Une combobox aux petits oignons : suite
par
, 04/03/2019 à 10h32 (1218 Affichages)
Après participation au webinaire : "créer des composants visuels sans faire de composant" je me suis lancé dans l'expérimentation en ajoutant la sauce "Patrick Prémartin aka pprem" à ma petite cuisine.
Le challenge comment intégrer les Livebindings dans ce contexte.
J'ai donc commencé par créer un cadre contenant les deux composants visuels, TEdit et TListView, et tout ce qui concerne les données TClientDataset, TBindSourceDB et TBindingsList (grosse erreur en ce qui concerne les données)
Soucis : j'assiste alors à une prolifération des composants (assez pénible)
Mais je constate que :
- Je peux accéder via le concepteur visuel de lien aux différents éléments
- Je peux changer de source de données
Le point assez génial de l'histoire c'est que, même si je réduis la taille du cadre à la taille de la zone de saisie, la liste apparait quand même quand nécessaire (clic sur le bouton de recherche).
Pour en faire un cadre beaucoup plus universel, je décide donc de supprimer toute notion de données à celui-ci.
![]()
L'avantage, toutes les liaisons sont à établir au moment du design, inconvénient comment passer la valeur souhaitée via la sélection de l'item à la zone de saisie (TEdit1) ?
Il y a certainement plusieurs solutions en commençant peut-être par une synchronisation au niveau des liens. Pour ma part j'ai préféré passer par un changement dans le type d'élément de liste (de TItemList à TItemListRightDetail) pour accéder très facilement à la donnée de l'item.
Le concepteur visuel me permet toujours d'accéder aux divers éléments, que ce soit en utilisant le cadre directement ou après en avoir fait un template (un "faux composant")
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TComboBoxFrame.ListeItemClick(const Sender: TObject; const AItem: TListViewItem); begin Edit1.Text:=AItem.Detail;
Par contre, la dernière étape de Patrick, consistant à faire du cadre un "vrai" composant ne semble pas franchissable. Vous remarquerez dans l'image au-dessus qu'aucune liaison n'est possible. L'astuce à donc ses limites.
Vous retrouverez cette expérience en détail dans mon prochain tutoriel sur le thème des ComboBox en FMX.