Bonjour,
Introduction
Je commence à m'habituer à FMX avec encore beaucoup d'hésitations et donc à "percevoir" le produit. J'ai cherché pendant 10 minutes quelle unité il fallait insérer dans le uses pour utiliser les couleurs pré-déclarées telles que claBlack... (System.UIConsts)...Ce qui prouve, je suppose, que je ne sais pas utiliser correctement l'aide... Pourtant un Lazarusien a l'habitude de chercher
.
Je commence à réaliser (basculer) l'équivalent de mes composants Lazarus. J'en suis à mes boutons graphiques. Je déplore évidemment l'absence de TImageList mais on fera sans... car j'ai vu une solution alternative.L'approche de "substitution" m'a semblé pour le moins complexe... J'allais écrire "invraisemblable". On va rester dans la modération. Manque de pratique sans doute.
Mais d'une manière générale, j'en suis au stade -que j'espère dépasser- de trouver l'environnement trop "contraignant", trop sophistiqué.... J'aime les IDE simples, dépouillés à la Delphi 7. Néanmoins, j'ai noté la question pour évaluation plus tard : Que m'apporte une telle sophistication en terme de productivité ? Par exemple les styles ? Quelle est leur ré-employabilité réelle ? Quel apport dans une Form comparé à la réalisation puis à l'utilisation d'un composant personnalisé ? Quelle est la limite de ce type de développement ? Par exemple, on trouve de nouveaux boutons stylisés (Ecriture penchée, fond de couleurs différentes...) mais je n'ai rien vu d'aussi sophistiqué que ce que l'on trouve en VCL (sans style). Là encore, jeunesse du produit ou complexité exponentielle avec les exigences ? Exemple de ce que je ne peux pas transposer actuellement de Lazarus vers FireMonkey : les boutons 5 états de Windev (mode "9 images" inclus)...
Enfin mes composants transposés "compilent" en XE4 et sont installables.
Mon problème : les ancres
Comment gérer l'alignement de plusieurs objets dans un TLayout utilisé comme ancêtre. En Lazarus, il m'est très facile de placer un objet par rapport à un autre, l'autre n'étant pas nécessairement le parent. Par exemple un TLabel centré horizontalement sur un TImage contenus (les deux) dans un TPanel (cf component.png). L'exemple est simple, et on pourrait certainement utiliser des références uniquement au Parent pour résoudre ce problème. Il est volontairement simple pour comprendre mon approche habituelle. Dès que le problème se complique un peu, le positionnement d'objets de "même niveau" les uns par rapport aux autres procure une souplesse et une simplicité inégalées. Comment fait on-cela en Delphi FMX ?
L'aide existe, est utilisable, mais ne m'a pas permis de résoudre mon problème.
et http://docwiki.embarcadero.com/Libraries/XE4/fr/FMX.Types.TAlignLayout...Envoyé par http://docwiki.embarcadero.com/Libraries/XE4/fr/FMX.Controls.TControl.Anchors[/B
Cela semble plus complet que Lazarus mais malheureusement c'est moins facilement fonctionnel.
etalHorzCenter : Le contrôle est centré horizontalement dans la zone client du parent, et se redimensionne afin de remplir la hauteur de son parent. La largeur du contrôle n'est pas affectée. Si un autre contrôle, épinglé sur le bord, occupe déjà la partie de la zone parent, le contrôle se redimensionne afin de remplir la hauteur restante de son parent. Les ancrages sont définis sur [akTop,akBottom].Je cherche pour commencer à réaliser un centrage horizontal (ou vertical) simple (ie sans redimensionnement) d'un objet dans son parent. J'ai cherché une solution dans http://docwiki.embarcadero.com/RADStudio/XE4/fr/Strat%C3%A9gies_des_dispositions_FireMonkey. Et là, pas mieux... Cela parle peut-être à un Delphien mais pas à moi. En réalité, cette complexité est dûe au fait que seul le parent est utilisé comme référence. Si les objets d'un même parent pouvait être interfacés entre eux, la simplicité et la puissance seraient au rendez-vous. Là, je veux bien supposer que la dernière y est mais quid de la simplicité ?Envoyé par http://docwiki.embarcadero.com/Libraries/XE4/fr/System.UITypes.TAnchors
Autre approche très délicate semble-t-il : les TStringGrids
Cela fera l'objet d'une autre discussion. Pour l'instant, je cherche de la documentation. Mais visiblement le codage est très différent de la VCL/LCL et certaines des méthodes que je veux implanter sont non documentées et les moteurs de recherches relativement muets.
Suite des commentaires
Sinon, que de plantages... Tout de suite en quittant Delphi (cf quit.png)... C'est la plupart du temps des problèmes d'affichage. Des Forms dans l'IDE qui deviennent noires (noir sur fond noir). Un petit resize à la souris rend le noir sur fond blanc ce qui me permet de revoir mes objets... Je ne parle pas du projet compilé mais de l'utilisation de l'IDE. C'est peut-être lié à mon 64 bits, à l'utilisation d'un Dual-Screen ? Par contre d'autres, comme celui-ci apparu juste après l'ouverture de Delphi lors de la déclaration d'un nouveau composant (cf ou.png), ne sont pas des problèmes d'affichage. Delphi s'est gelé.
Pas de nouvelles de mes déclarations de bugs (reçues pas reçues, validées, en cours de traitement ?)... Rien à voir avec le bugtracker de Lazarus et le confort des patchs quotidiens...
Mes impressions sont à la baisse... mais pas définitives. J'ai un avis très réservé sur les styles, le livebinding... C'est simple au départ, puis rapidement compliqué. L'approche est très "propriétaire" (ie propre à Embarcadero)... Et à mon avis, d'autres approches sont aussi productives et efficaces... et moins contraignantes. Bref, je ne vois pas réellement l'apport de ces méthodes. Et là, j'ai une impression bizarre de déjà vu... Ce type d'aide au développement, on met le doigt dedans... et on subit au fil des versions -que l'on ne peut plus quitter... et pour cause- le meilleur... et le pire. En résumé, au niveau simplicité, j'ai vu mieux et au niveau fonctionnalité, j'ai vu mieux aussi... surtout si on lie les 2 !
Il me reste 30 jours pour affiner mon approche et m'adapter au mieux au produit. Merci pour une éventuelle réponse sur les ancrages. Cela m'arrangerait bien... Sinon on va faire des calculs pour les positionnements.
Ressources
- INNOVA Solutions : FireMonkey is Different [http://www.innovasolutions.com.au/delphistuf/ADUGVCLtoFMXConv.htm]
Contient notamment VclToFmxConvert.zip - Zip of Code and Executable The file includes the latest executeable and source code. Il y a les sources mais dans mon cas le paquet ne s'installe pas. Il me manque "fmx161.bpl". (cf package.png). Est-ce un moyen d'empêcher l'installation de paquets tiers dans les versions Trial ou un paquet créé en XE2 qui nécessite une bibliothèque (ou un paquet) abandonnée en XE4? Je ne sais pas.
Bon WE. Cordialement. Gilles
Partager