IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Blog de Serge Girard (aka SergioMaster)

[FMX] Une combobox aux petits oignons : suite

Noter ce billet
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)
Nom : Frame_design.PNG
Affichages : 456
Taille : 5,7 Ko
Soucis : j'assiste alors à une prolifération des composants (assez pénible)
Nom : Frames_ajouts.PNG
Affichages : 373
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 : 493
Taille : 13,6 Ko
  2. Je peux changer de source de données
    Nom : Frames_deux.PNG
Affichages : 393
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 : 425
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 : 340
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