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

Blog de Serge Girard (aka SergioMaster)

Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle

Noter ce billet
par , 28/09/2020 à 10h34 (286 Affichages)
Il y a peu Patrick (pprem) me mettait plus ou moins au défi de pondre un tutoriel suite à son annonce sur un code déposé par Malcolm Groves : Fluent LiveBindings.
Objectif, faire les liens données/composants dans le code au runtime et non dans le source de la forme (dfm ou fmx).

À défaut de tutoriel, Je me suis donc penché sur la question avec un "exercice" simple (de mon point de vue) la liaison de données avec une grille (uniquement 2 colonnes) en FMX, j'avoue avoir plus tendance à utiliser un TListView désormais mais c'est "pour la bonne cause".

Exercice simplifié à l'extrême ou presque, j'ai juste ajouté quelques expressions "obligatoires"

  1. Le format du SS_NUMBER (bon il s'agit d'un jeu d'essai US mais je suis presque sûr qu'il n'a pas de décimales)
  2. Le FIRST_NAME (en fait je veux afficher prénom et nom dans la même colonne).


A - Le concepteur visuel
L'utilisation du concepteur visuel me donne rapidement ceci :

Nom : Capture.PNG
Affichages : 64
Taille : 26,2 Ko

J'ai une déjà une visualisation de la sortie.

Définir un format de sortie pour le SS_NUMBER, 0 000 000 00 (totalement loufoque peut-être mais pratique pour la démo).
Nom : Capture_2.PNG
Affichages : 51
Taille : 21,2 Ko
permettra d'afficher le format souhaité (à défaut d'être correct), avec la version 10.4 on en restera là avec une version antérieure, comme pour le couple PRENOM NOM, souhaité (bien que j'eusse pu jouer sur mon ensemble de données) il va falloir renseigner une propriété du lien : CustomFormat


Et voilà où le mode Râleur commence. Le reflexe : utiliser BindingsList pour accéder aux formats et modifier la présentation

Nom : Capture_1.PNG
Affichages : 51
Taille : 37,0 Ko

Sauf que, puisqu'il s'agit de liens rapides tout est verrouillé

Néanmoins, cela reste accessible via les propriétés (pas vraiment où l'on s'attend à les trouver mais bon passons)

Nom : Capture_3.PNG
Affichages : 52
Taille : 39,6 Ko

Nom : Capture_4.PNG
Affichages : 52
Taille : 34,1 Ko

[U]Dois-je le préciser ? Pas une ligne de code n'a été nécessaire, tout est dans le source de la forme. [/B]

Mais, car bien sûr il y a un "mais" sinon je ne me serai pas mis en mode râleur, un mauvais customformat et la visualisation plante lamentablement et de petites manipulations seront nécessaires pour retrouver le wyseewyg. À quoi servent donc les boutons 'Evaluer le contrôle', 'Evaluer la source' (image 2) puisque les expressions des liens rapides ne sont pas modifiables ?

B - La liaison "manuelle"
Plutôt que de passer par le concepteur visuel et ses liaisons rapides, j'ai plus prôné pour ce que j'ai surnommé des liaisons "manuelles".

Nom : Capture_5.PNG
Affichages : 54
Taille : 27,4 Ko

Seulement voilà, il y a un hic, il faut quand même un bonne connaissance (et mémoire) de certaines choses, surtout concernant les grilles. En effet aucune expression n'est renseignée et les formules de positionnement (PosControl, PosSource) ne sont pas si évidente !
Je ne m'étend pas plus puisque j'ai écrit un tutoriel sur ce sujet.


Que reproche-t-on le plus aux LiveBindings ?
  • "Tout est dans le source de la forme" c'est là où le bât blesse, la visibilité dans le code (quasi nulle) et donc la maintenance qui n'en sera pas facilité. J'y ajouterai qu'une édition du source de la forme (dfm ou fmx) n'apportera rien ou peu à une documentation car n'acceptant aucun commentaire.
  • Plus technique, une partie, les expressions, est interprétèe et non compilée. En annecdote ce fait peut poser des problèmes ne serait-ce qu'avec le point décimal


Les anciens Delphistes y ajouteraient certainement d'autres points qui peuvent les rendre quelques peu allergiques à ces "nouveautés" à Paul Toth mais aussi à Malcolm Groves et beaucoup d'autres. Pourtant (boutade) ils utilisent les RTTI depuis longtemps
Miniatures attachées Images attachées  

Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Viadeo Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Twitter Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Google Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Facebook Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Digg Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Delicious Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog MySpace Envoyer le billet « Livebindings : Concepteur visuel ou codification ? Partie 1 - Conception visuelle » dans le blog Yahoo

Catégories
Delphi

Commentaires