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

 Delphi Discussion :

Redimensionner dynamiquement tous les objets d'une Form quand on change sa taille


Sujet :

Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut Redimensionner dynamiquement tous les objets d'une Form quand on change sa taille
    Bonjour à tous !

    Je cherche un moyen (composant ?) pour redimensionner et repositionner tous les objets d'une Form quand l'utilisateur change sa taille.
    Il y avait un composant qui faisait ça (plus ou moins bien) dans la JVCL mais il n'est pas opérationnel dans les dernières versions de l'EDI (D10.3).
    Où puis je chercher un composant qui gère cela ?
    Je suis sur que c'est un problème très courant qui a été creusé moult fois !

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    je ne comprend pas la question....

    sous FMX dernièrement j'ai utilisé la propriété Scale pour "zoomer" une page...c'est pratique pour conserver les mêmes proportions, mais ce n'est pas forcément souhaitable d'agrandir le texte par exemple.

    Sinon sous VCL, entre Align et Anchors, sans oublier Constraints pour fixer les limites, tu peux très bien avoir une mise en page dynamique.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 449
    Points : 24 856
    Points
    24 856
    Par défaut
    en VCL, ScaleBy existe aussi pour gérer le zoom même cela exige que ce que l'on appelle maintenant le "Responsive Design" c'est à dire en Delphi, un grand soin comme le dit Paul Toth de Align et Anchors
    Quelques fois les Anchors mis en Right et\ou Bottom sont un peu moins fiable que l'imbrication Panel en Align Bottom et à l'intérieur un autre Panel en Align Right
    Il y a aussi AutoSize du Panel qui peut être utilisé conjointement au Padding pour gérer les espacements mais aussi le couple AlignWithMargins et Margins

    je me suis fait un assistant pour générer un menu de gestion de Zoom, beaucoup utilisé pour des applications avec un Design genre 800x600 devant être visible de loin par un utilisateur donc zoomé en 200% à 300%

    En tout cas, inutile de passer par un composant, tout peut être fait nativement et ça au moins depuis Delphi 3
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre confirmé Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Points : 477
    Points
    477
    Par défaut
    Il n'y a que la taille des composants que tu veux changer ? Dans ce cas les solutions évoquées au-dessus fonctionnent très bien.
    Par contre, si tu veux modifier également la font des libellés, c'est un autre histoire. Je me souviens avoir utilisé un composant qui le faisait il y a une 10aine d'années. Mais pas moyen de me souvenir du nom.

    Tu dis que le composant de la JVCL n'est pas opérationnel ? Tu as des détails ? Il ne fait pas le job, ou bien il n'est pas possible de l'installer en D10 ?

  5. #5
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    Merci de vos réponses...

    oui je me doute que c'est faisable avec la VCL, mais comme c'est un problème que tout le monde doit rencontrer, je pensais trouver un composant qui le faisait.
    Et comme je suis un peu pris en ce moment....
    D'ailleurs je suis surpris que TForm ne l'inclue pas.
    TJvFormAutosize marchait pas trop mal en D5. On peut installer la librairie JVCL dans D10.3, mais ce composant redimensionne les contrôles de manière incohérente. Il faudrait se replonger dans le code...

    Et pour compléter ma réponse, non, je ne veux pas changer les polices, juste dimensionner en fonction de la taille de la form.
    Bon, si pas de solution toute faite, je vais différer à plus tard.

  6. #6
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    Si c'est juste pour redimensionner les Controls quand l'utilisateur redimensionne la Form, pourquoi tu n'utilises pas tout simplement les ancrages ?

    A+
    Charly

    Si c'est la résolution de l'écran alors ce sont les solutions déjà évoquées plus haut

  7. #7
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut Solution bourrin
    Il y a la solution bourrin que j'utilise quand je n'ai pas trop de composant sur ma Form et qui consiste à recalculer dans la méthode OnResize les positions et les tailles de chaque composant en fonction de l'espace disponible.
    Ça a l'avantage d'obtenir précisément ce qu'on veut mais ça a le gros inconvénient d'être très lourd à gérer.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    Il y a la solution bourrin que j'utilise quand je n'ai pas trop de composant sur ma Form et qui consiste à recalculer dans la méthode OnResize les positions et les tailles de chaque composant en fonction de l'espace disponible.
    Ça a l'avantage d'obtenir précisément ce qu'on veut mais ça a le gros inconvénient d'être très lourd à gérer.
    je suppose que c'est ce que fait TJvFormAutosize, mais je trouve la méthode douteuse, il est tellement plus simple de fixer des alignements ou des ancres !

    le seul défaut c'est qu'il est parfois nécessaire d'ajouter des TPanel uniquement à des fins de mise en page, il manque la notion de TLayout de FMX qui ne serait possible qu'avec une demande qui n'a pas été validée
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Membre expérimenté
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 076
    Points : 1 521
    Points
    1 521
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    je suppose que c'est ce que fait TJvFormAutosize, mais je trouve la méthode douteuse, il est tellement plus simple de fixer des alignements ou des ancres !

    le seul défaut c'est qu'il est parfois nécessaire d'ajouter des TPanel uniquement à des fins de mise en page, il manque la notion de TLayout de FMX qui ne serait possible qu'avec une demande qui n'a pas été validée
    A un moment donné j'avais été tenté de faire un composant du style TLayout et puis FMX est arrivé et je suis passé à FMX.
    Il y a des jours où j'éprouve une haine profonde envers microsoft et Apple c'est pas mieux
    Mon modeste site et mes modestes oeuvres sont
    Rémi

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Gouyon Voir le message
    A un moment donné j'avais été tenté de faire un composant du style TLayout et puis FMX est arrivé et je suis passé à FMX.
    sous VCL TPanel fait office de Layout, car malheureusement la relation parent/enfant ne peut se faire qu'au niveau de TWinControl, et TPanel en est la forme la plus simple. Avec ma proposition de remonter la relation parent/enfant au niveau de TControl, il serait possible d'avoir un TLayout qui n'affiche rien et de placer des enfants par rapport à lui. Cela permettrait facilement de positionner les TGraphicControls et sans doute de façon assez satisfaisante les TWinControl ...même s'il peut y avoir certaines contraintes sur le clipping.

    j'ai étudié cette option ici mais pour généraliser le procédé il faut modifier la VCL
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    le seul défaut c'est qu'il est parfois nécessaire d'ajouter des TPanel uniquement à des fins de mise en page, il manque la notion de TLayout de FMX qui ne serait possible qu'avec une demande qui n'a pas été validée
    C'est ce que je voulais dire ... Bah, ça viendra peut-être un jour !

  12. #12
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 344
    Points : 3 122
    Points
    3 122
    Par défaut
    Bonjour,

    si on utilise la propriété Align, il faut parfois des Panels, mais pour Anchors on en a pas besoin, le Control suit le bord sur lequel il est ancré. On peut même ancrer sur 2 bords opposés pour qu'il s'agrandisse.
    Je pense que cela doit suffire dans 90 % des cas ?

    A+
    Charly

  13. #13
    Membre habitué
    Homme Profil pro
    Responsable associatif
    Inscrit en
    Octobre 2005
    Messages
    228
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Responsable associatif

    Informations forums :
    Inscription : Octobre 2005
    Messages : 228
    Points : 162
    Points
    162
    Par défaut
    Citation Envoyé par Charly910 Voir le message
    Bonjour,

    si on utilise la propriété Align, il faut parfois des Panels, mais pour Anchors on en a pas besoin, le Control suit le bord sur lequel il est ancré. On peut même ancrer sur 2 bords opposés pour qu'il s'agrandisse.
    Je pense que cela doit suffire dans 90 % des cas ?

    A+
    Charly
    Oui on va s'en contenter !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/06/2006, 08h32
  2. [Débutant] Initialiser les propriétés de tous les objets d'une ArrayList
    Par Tententai dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 23/05/2006, 20h24
  3. Modifier dynamiquement TOUS les URL d'une page
    Par Torpedox dans le forum Langage
    Réponses: 2
    Dernier message: 06/04/2006, 05h21
  4. Envoie d'un message a TOUS les composant d'une form
    Par chddv dans le forum Composants VCL
    Réponses: 7
    Dernier message: 15/09/2003, 09h47

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