Voir le flux RSS

Blog de Serge Girard (aka SergioMaster)

[FMX] Une combobox aux petits oignons : suite

Noter ce billet
par , 04/03/2019 à 11h32 (84 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)
Nom : Frame_design.PNG
Affichages : 21
Taille : 5,7 Ko
Soucis : j'assiste alors à une prolifération des composants (assez pénible)
Nom : Frames_ajouts.PNG
Affichages : 19
Taille : 12,0 Ko
Mais je constate que :
  1. Je peux accéder via le concepteur visuel de lien aux différents éléments
    Nom : Frame_EditeurdeLiaison.PNG
Affichages : 19
Taille : 13,6 Ko
  2. Je peux changer de source de données
    Nom : Frames_deux.PNG
Affichages : 19
Taille : 28,3 Ko

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.
Nom : Frame_2.PNG
Affichages : 19
Taille : 996 octets
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.

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;
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")
Nom : frame_livebinding.png
Affichages : 19
Taille : 26,4 Ko

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.

Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Viadeo Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Twitter Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Google Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Facebook Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Digg Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Delicious Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog MySpace Envoyer le billet « [FMX] Une combobox aux petits oignons  : suite » dans le blog Yahoo

Tags: delphi, fmx, tcombobox
Catégories
Programmation , Delphi , FMX

Commentaires