IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants FMX Delphi Discussion :

Utilisation des TGridPanelLayouts


Sujet :

Composants FMX Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut Utilisation des TGridPanelLayouts
    Bonjour,

    ma documentation de base sur le sujet est celle-ci.

    Le modèle le plus fonctionnel que j'ai trouvé est le lazarusien (Même en VCL il n'existe pas):
    Sa supériorité réside dans le fait qu'il n'est pas centralisé. Sa difficulté parfois dans sa "circularité" : il faut cogiter souvent. Ce n'est pas un objet qui gère l'organisation des autres mais des relations entre chaque objet. C'est une organisation fluide, interactive qui fait se positionner les objets les uns par rapport aux autres. Chaque objet graphique (TLabel, TEdit, TStringGrid) dispose de la propriété ci-dessus avec ce degré d'efficacité d'interactions (l'ancrage).

    Je ne discute pas du choix de FireMonkey. Je suppose que la partie "mobile" a imposé ce choix.
    Mais il y a une insuffisance que je ne peux pas résoudre à cause d'un choix très curieux des TGridPanelLayout : les RowSpan et les ColSpan (ColumnSpan) qui positionnent les objets sur les intersections et ne regroupent pas des cellules contrairement aux "habitudes" :
    Autrement dit la structure (les pointillés) de la GridPanel est immuable contrairement à l'approche également "centralisée" (un objet pour placer tous les autres) de Qt.
    Pour l'instant, ce qui me ravirait, ce sont de vraies RowSpan et ColSpan à la HTML et quelque chose qui ressemblerait aux spacers (en bleu) de Qt.

    En attendant, malgré tous mes efforts, je rencontre un problème inattendu. Avec un TGridPanelLayout, comment gérer les différences d'affichages entre OS ou entre résolutions avec des TEdits, TLabels qui "s'autosizent" tout en respectant la structure que l'on aperçoit bien sur le schéma Qt ? J'ai commencé à développer un autre objet centralisé qui recalcule la position des objets par rapport à des propriétés que je définis sur chacun d'eux (un compromis à la Lazarus). Je l'ai ébauché en Androïd -même si ce n'est pas le but principal - pour gérer une organisation plus pointue de l'affichage. Mes cibles principales restent quand même Windows et OS X. Et avant de commencer à réaliser un composant en FMX -aucune idée de la façon pour l'instant mais je le faisais usuellement en Lazarus-, j'aimerais être sûr qu'au niveau de l'organisation "standard", de l'orthodoxie, il n'y a pas de solution pour réaliser la "répartition" des objets comme sur la grille Qt ci-dessus. Sachant que je cherche une approche généralisable et usuelle qui serait, entre autres, une solution au problème particulier que je prends comme exemple et non pas une astuce pour régler ce cas de figure. Pour l'instant, mon test uniquement avec des TGridPanelLayouts (et autres Layouts) tronquent "Votre Prénom" (le TLabel le plus long) quand j'affiche le résultat sur un poste de test XP qui a une résolution plus faible que mon poste de développement.
    Dernière modification par Invité ; 19/10/2014 à 12h47.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Rebonjour,

    je complète la formulation de ma question :

    Je commence par le GridPanelLayout supérieur. Son positionnement est "Top". Autrement dit son ancrage est akLeft + aktop + akRight. Pour n'obtenir qu'une colonne, j'ai dû modifier à la main l'unit1.fmx. Mais cela à la rigueur n'a aucun intérêt.
    Maintenant les champs contenus laIDENTIFICATION et laVERSION devrontt être "autosize" pour prendre la longueur nécessaire en fonction de l'OS ou de la version de l'OS (XP, Vista, 7). Et dans ce cas, comment se débrouille-t-on pour corriger automatiquement la hauteur du GridPanelLayout ? Sur l'image, il apparaît bien que sa valeur Height est trop importante.
    J'ai dû utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GridPanelLayout1.Height := max(laIDENTIFICATION.Height, laVERSION.Height);
    Pour le deuxième GridPanelLayout, cela devient plus compliqué : Il est déclaré "center" pour figurer au milieu de la Form. Le découpage en 2 colonnes de 50% n'a peu de sens puisqu'il devient tout à fait "pifométrique" suivant l'OS. Pour être plus précis, ses dimensions engendrent un comportement bizarre car elles ne semblent pas se réajuster. Or sur mon XP, la largeur doit devenir insuffisante puisque les TLabels sont tronqués. Evidemment, je peux prendre plus large mais souvent il faut prendre au plus juste... et le plus juste c'est que cela se calcule automatiquement. Or un "auto-calcul" semble impossible. Quand je déclare mes 3 TLabels en autosize et no-wordwrap, le résultat est "décoiffant". Sur l'image je n'ai pas modifié le wordwrap du 3ème TLabel. A ce niveau cela devient délicat. L'idéal serait que la grille se cale sur les longueurs et hauteurs "autosizées" des TLables de Column[0] (enfin GridPanelLayout2.ColumnCollection.Items[0]) tout en respectant les longueurs fixes des TEdits et TcomboBox de Column[1]. J'ai également regardé au niveau des styles mais il semble qu'on ne puisse pas en affecter au composant TGridPanelLayout... En tout cas dans le cas contraire, c'est peu aisé à trouver.
    Dernière modification par Invité ; 19/10/2014 à 16h55.

Discussions similaires

  1. Règles d'utilisation des forums C
    Par Franck.H dans le forum C
    Réponses: 3
    Dernier message: 26/01/2008, 17h35
  2. [CR8.5] Utilisation des codes barre
    Par Robert dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 20/01/2005, 16h13
  3. utilisation des sockets sous windows
    Par Tupac dans le forum Réseau
    Réponses: 2
    Dernier message: 21/12/2002, 18h24
  4. [Crystal Report] Utilisation des vues de sql serveur
    Par Olivierakadev dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 15/11/2002, 17h44
  5. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo