Developpez.com - Rubrique Delphi

Le Club des Développeurs et IT Pro

LiveBindings avec Delphi : écrire un composant observable

Un tutoriel de Serge Girard

Le 2019-06-03 16:47:04, par gvasseur58, Responsable Lazarus & Pascal
LiveBindings avec Delphi : écrire un composant observable
un tutoriel de Serge Girard

Au cours de son introduction aux LiveBindings, Serge Girard avait utilisé un VCL.TTrackBar et en particulier sa propriété Position.Vous aviez alors découvert que ce composant n'était pas observable et un contournement vous avait été proposé pour résoudre ce problème : l’utilisation d’un lien non géré et l’instruction Notify. L'objectif de ce nouveau tutoriel est d'apprendre à rendre une propriété d'un composant observable et même d’ajouter d’autres propriétés qui pourront être liées.



Le tutoriel est ici : https://serge-girard.developpez.com/...s/Composant_A/

Encouragé lors des rencontres Delphi récemment organisées en France, Serge est déjà à pied d’œuvre pour le second volet de ce travail sur les composants FMX : qu'il en soit ici remercié au nom de la communauté Delphi de developpez.com.

Que pensez-vous de ce tutoriel ?
Comment gérez-vous les composants avec FMX ?

Les meilleurs cours et tutoriels pour apprendre la programmation Delphi
  Discussion forum
5 commentaires
  • Bonjour Serge,

    je crois que c'est l'approche globale qui me... lasse : du Livebinding, des styles à Gogo, des composants dont l'environnement de programmation (les à-côtés, les "déclarations" devient délirant. J'apprécie de placer mes composants sur une Form, une QMainWindow et ensuite de retourner sur mon éditeur (de textes) pour tout coder en Pascal ou en C++.

    Suite à notre visite à Nantes, je me suis demandé s'il était possible de faire aussi bien que les ControlImage présentés par Patrick pour gérer le 4K et autres Retina. Le ScaleBy de Lazarus permet la mise à l'échelle d'une Form complète dans les 3 OS (y compris des polices automatiquement). Donc j'ai d'abord "fabriqué" une approche identique : glyph16, glyph32, glyph64,... avec un peu de code très classique pour déterminer au resize qu'elle est le glyph dont la taille est la plus proche de celle de l'objet redimensionné en privilégiant la réduction à l'augmentation...

    Un de mes stagiaires qui est venu à Nantes a trouvé le système "dépassé" et m'a proposé d'utiliser SVG. Donc acte. J'ai testé sur un Retina : impeccable. Et évidemment portable sur Qt. Durée de la mise à jour de ma ligne de composants graphiques : BitButton, SpeedButton, Image,... et un composant non graphique de procédure d'affichage dans les Grids par exemple : une journée tout compris et je suis parti de TGraphicControl et TCustomControl, donc de la base. Il me reste à voir les menus.

    Je laisse pour l'instant Delphi dans son coin sauf éventuellement pour le mobile. La partie non code (i.e. purement Pascal ou C++) d'une Form me semble représenter une part trop importante du développement, trop subtile pour moi et surtout trop floue donc extrêmement chronophage en production... qui devient insupportable quand le développement est conséquent. Effectivement ce n'est pas qu'une histoire de génération mais certainement, plus une capacité d'adaptation.

    Bonne journée. A bientôt.
    Gilles
  • Bonjour,

    Bravo Serge !

    Mais je suis tout à fait incapable de produire un tel composant de manière "autonome". Je me demande quel temps de recherche représente cette approche. Pour moi, elle serait tellement conséquente… que je préfère renoncer . Je crois même que mon hypothétique utilisation de C++ Builder serait gâtée compte tenu de la 'gymnastique" nécessaire : mon manque de souplesse serait rédhibitoire. Franchement cette approche m'est toujours aussi indigeste voire insupportable. Quelle curieuse tournure d'esprit imposée ! J'utiliserai FMX donc Delphi que quand je ne pourrai pas passer ni par Qt, ni par Lazarus.

    Mais quand même, chapeau l'Artiste

    A bientôt. Gilles.
  • SergioMaster
    Rédacteur/Modérateur
    Bonsoir Gilles,
    Envoyé par Selzig
    Je crois même que mon hypothétique utilisation de C++ Builder serait gâtée compte tenu de la 'gymnastique" nécessaire : mon manque de souplesse serait rédhibitoire.
    Tous ceux qui me connaissent te diront que je suis physiquement loin d'être souple (et peu enclin à la gymnastique) c'est d'ailleurs à cause de mes raideurs que je choisis mes places dans les salles de façon très stratégique (pour ne pas avoir à tourner la tête). Bon cela dit je pense que tu voulais parler de gymnastique intellectuelle.

    C'est vrai que de prime abord FMX est une bête étrange mais dans ce tutoriel il y a peu de pur FMX , je commence d'ailleurs par du VCL. Le seul point utilisé n'est pas tant FMX que Livebindings et ses particularités nécessaires pour les liaisons. Et Livebindings qu'est-ce ? En grossissant à peine le trait c'est une chose qui existe depuis des lustres : les RTTIs encapsulés avec des nouveautés
    mais de l'existant !
    Je concède que peu utilisent les RTTIs moi-même dans toute ma carrière ne l'ai-je utilisé que quelques fois et surtout pour du "cosmétique" genre changement de couleurs de mon interface.

    FMX n'est pas LiveBindings même si Livebindings semble assez incontournable dès qu'il s'agit de FMX. FMX n'est pas non plus Delphi puisque avec C++ Builder on peut très bien faire des programmes multi-plateformes


    Mais quand même, chapeau l'Artiste
    Merci

    Envoyé par gvasseur58
    Serge est déjà à pied d’œuvre pour le second volet de ce travail sur les composants FMX
    Pas aussi facile celui-là, la création de ce volet est en dents de scie
  • SergioMaster
    Rédacteur/Modérateur
    Bonjour,
    Envoyé par Selzig

    Un de mes stagiaires qui est venu à Nantes a trouvé le système "dépassé" et m'a proposé d'utiliser SVG.
    Marrant, c'est justement ce que je suis en train de "tester à fond" cf Codes sources à télécharger
    et commence même un petit topo sur le sujet (pas sur le SVG mais sur TPath)
  • SergioMaster
    Rédacteur/Modérateur
    Bonjour,

    Par M.P. l'on m'a fait remarquer que les images n'étaient pas centrées ce qui rendait le tutoriel moins esthétique.
    Après m'être un peu bagarré avec le fichier, je viens de mettre en ligne la version révisée.