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

WinDev Discussion :

Redimensionner fenêtre et champs [WD12E]


Sujet :

WinDev

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut Redimensionner fenêtre et champs
    Bonjour,

    Je souhaite redimensionner ma fenêtre et les champs qu’elle contient en fonction de la résolution de l’écran. En développement, ma fenêtre a une dimension de800x600 soit 4:3

    Dans un premier temps je redimensionne la fenêtre, tout va bien. J’obtiens, par exemple, une fenêtre 1200x900 donc toujours 4:3 même sur un écran large. J’ai donc un coefficient d’homothétie de 1,5.

    En manipulant les ancrages, je n’arrive pas à avoir des déplacements et des redimensionnements des champs corrects.
    Voici le code qui correspond au redimensionnement de la fenêtre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    RésolEcranY est un réel
    RésolEcranY=SysYRes()
     
    // Redim de la fenêtre en 4:3, je ne tiens compte que de la hauteur (pour de pas m'adapter aux écrans larges)
    CoefRésolHaut est un réel
    CoefRésolHaut=RésolEcranY/600
    MaFenêtre..Largeur=MaFenêtre..LargeurInitiale*CoefRésolHaut
    MaFenêtre..Hauteur=MaFenêtre..HauteurInitiale*CoefRésolHaut
     
    //Centrage de la fenêtre
    MaFenêtre..X=((SysXRes() - MaFenêtre..Largeur))/2
    MaFenêtre..Y=(MaFenêtre..Hauteur -SysYRes())/2
    Comment appliquer ce coefficient de 1,5 à tous mes boutons, libellés...
    Merci pour votre aide.

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Concrètement quel est le problème ?

    Citation Envoyé par DanielB Voir le message

    Comment appliquer ce coefficient de 1,5 à tous mes boutons, libellés...
    Si tu as spécifié l'ancrage des champs affichés dans la fenêtre, alors le redimensionnement de la fenêtre sera automatiquement répercuté sur tous les champs avec ancrage.

    Quelle que soit la façon de redimensionner, par l'utilisateur ou par programmation (comme dans ton exemple) , il n'y a rien à programmer, et c'est un des points forts de WinDev dans le développement d'interface utilisateur.
    _

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci pour la réponse.
    J'ai effectivement activé les ancrages (en bas, à droite, en hauteur, en largeur) avec un coefficient de 15% mais j'ai des champs qui se chevauchent.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Dans un cas "simple" où tous les redimensionnements/déplacements de champs sont exactement proportionnels au redimensionnement de la fenêtre, tu peux te contenter (tu dois te limiter) aux ancrages "standards" qui te sont proposés.

    Dans les ancrages standards:
    _ • les redimensionnements et les déplacements à droite/en bas sont à 100%,
    _ • les déplacements "centrés" verticaux/horizontaux appliquent un pourcentage de 50%.

    Ne cherche pas à fixer toi même les pourcentages, à moins de bien savoir quels effets tu comptes appliquer.
    _

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    merci
    Simple peut-être mais j'ai du mal.
    Je Sélectionne mon bouton puis clic droit et je sélectionne l'ancrage "Largeur et Hauteur" Mon bouton s'étire, mais dans des proportions beaucoup plus grandes que x1,5. Je voudrais également qu'il se déplace aussi vers la droit et vers le bas

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Hypothèse de travail:
    Supposons 2 champs bouton placés côte à côte, en bas à droite de la fenêtre.
    On les appelle BTN_Gauche et BTN_Droite.

    Quand la fenêtre est redimensionnée (agrandie), les champs boutons doivent rester de même hauteur (0%), en bas de la fenêtre (100%), leur largeur est modifiée (40% de l'accroissement appliqué à la fenêtre) mais ils restent calés à droite, avec un léger déplacement à droite (là les % sont plus subtils ).

    Pourcentages d'ancrage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    BTN_Gauche..TauxAncrageDroite = 20    // % "subtil" ;)
    BTN_Gauche..TauxAncrageBas = 100    // en bas
    BTN_Gauche..TauxAncrageLargeur = 40    // agrandissement de 40%
    BTN_Gauche..TauxAncrageHauteur = 0    // hauteur fixe (ou à ne pas côcher)
     
     
    BTN_Droite..TauxAncrageDroite = 60    // % "subtil" ;)
    BTN_Droite..TauxAncrageBas = 100    // en bas
    BTN_Droite..TauxAncrageLargeur = 40    // agrandissement de 40%
    BTN_Droite..TauxAncrageHauteur = 0    // hauteur fixe (ou à ne pas côcher)
    Tu remarqueras qu'il faut maintenir certaines égalités.

    Pour que BTN_Droite grandisse de 40% tout en restant calé à droite il faut que:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BTN_Droite..TauxAncrageDroite + BTN_Droite..TauxAncrageLargeur = 100
    Pour maintenir l'écart horizontal entre les 2 boutons il faut maintenir l'égalité suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BTN_Gauche..TauxAncrageDroite = BTN_Droite..TauxAncrageDroite - BTN_Gauche..TauxAncrageLargeur

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonjour,
    Pour être simple et concret je voudrais pour l'instant m'en tenir au cas qui me semble le plus simple. Ma fenêtre passe de 800x600 à 1200x900, comment déplacer et agrandir mon bouton BTN_Bouton dans même rapport. Je n'y arrive pas aussi bien avec la fenêtre que par programmation. Merci

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Si ton bouton est le seul a être redimensionné:
    100% en largeur
    100% en hauteur

    Peu importe le coefficient de redimensionnement de la fenêtre, x1.5, x10...

    Sinon pour résumer:
    x% d'ancrage en largeur/hauteur: si ta fenêtre s'agrandit de n pixels, l'élément s'agrandit de n*x/100 pixels
    x% d'ancrage en bas/droite: si ta fenêtre s'agrandit de n pixels, l'élément est déplacé de n*x/100 pixels

    Tu peux aussi tester tout seul: tu mets un bouton au centre d'une fenêtre redimensionnable, tu entres différentes valeurs pour les ancrages, tu lances la fenêtre, tu redimensionnes la fenêtre et tu vois ce qui se passe.

    Tatayo.

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci,
    Je viens de placer un unique bouton au centre de ma fenêtre 800x600.
    Ancrage--> largeur =100%, hauteur=100%, rien d'autre
    Lorsque je maximize le bouton reste au centre mais il devient énorme, pas du tout dans le rapport d'agrandissement... je ne comprends pas???

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    En réalité il n'est pas au centre, car le hasard a voulu que le redimensionnement a donné l'apparence qu'il était au centre. En revanche il est énorme??

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    C'est normal. Si ta fenêtre passe de 800x600 à 1600x1200, ton bouton passe de 32x32 (par exemple) à 832x632.
    Ta fenêtre a pris 800 pixel de large, donc ton bouton prend 100% de 800 pixel en plus en largeur. Idem pour la hauteur.

    Il ne faut pas raisonner en ratio d'agrandissement de la fenêtre, mais en taille en pixel. Ce n'est pas parce que ta fenêtre double en taille que le bouton double aussi en taille.

    Autre exemple:
    Si tu as 2 champs de saisie qui se partage équitablement la largeur de la fenêtre, tu va les ancrer ainsi:
    Celui de gauche: 50% en largeur
    Celui de droite: 50% à droite, et 50% en largeur.

    Tatayo.

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci à tous,
    J'ai compris le fonctionnement. Il faut traiter champ par champ en fonction des champs qui l'entourent.
    Comme j'ai des fenêtres très chargées en champs de toutes sortes le travail est très fastidieux.
    Je pose quand même la question de savoir s'il n'y a pas de moyen pour que tous les champs se redimensionnent automatiquement en fonction du redimensionnement de la fenêtre ?

  13. #13
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Effectivement le redimensionnement/repositionnement des champs par ancrage ne gère pas un ratio mais un nombre de pixels.

    Pour appliquer un ratio à tous les champs de la fenêtre, je n'ai pas de solution "toute faite" à te proposer.

    En y réfléchissant, je pense qu'il ne faut pas activer le système d'ancrage des champs qui n'est pas prévu pour ça, et gérer "à la main" le redimensionnement/repositionnement des champs.

    La fenêtre met à disposition un traitement "Modification de la taille de la fenêtre".
    Dans ce traitement, on peut calculer le ratio horizontal (nRatioH) et le ratio vertical (nRatioV), et les utiliser pour recalculer la position et la taille des champs en fonction de ces ratios.

    UN peu comme ceci:
    Code WLangage : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    monChamp..X = monChamp..XInitial * nRatioH
    monChamp..Largeur = monChamp..LargeurInitiale * nRatioH
     
    monChamp..Y = monChamp..YInitial * nRatioV
    monChamp..Hauteur = monChamp..HauteurInitiale * nRatioV
    Voilà, c'est une suggestion.
    Si le principe est validé, alors on peut utiliser une boucle pour énumérer les champs et leur appliquer ces opérations.
    _

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci =JBO=
    En reconsidérant le problème j'en était arrivé à la même conclusion, je vais redimensionner les champs après énumération et en utilisant les redirections pour balayer tous les champs.
    merci

  15. #15
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Bonjour,
    Voici ma solution:
    Je rappelle qu'il faut redimensionner et déplacer tous les champs d'une feuille en fonction de la résolution de l'écran. Dans mon cas j'ai appelé CoefLargeur et CoefHauteur les rapports anciennes/nouvelles dimensions de la feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Énumère tous les champs de la feuille et redimensionne chacun d'eux
     
    i est un entier
    encourschamp est une chaîne
    POUR i=1 A 7  // 7 étant le nombre de champ
    	encourschamp= EnumèreChamp(FEN_Fenetre1,i)	
    	{encourschamp,indChamp}..X =({encourschamp,indChamp}..X)*CoefLargeur
    	{encourschamp,indChamp}..Largeur = ({encourschamp,indChamp}..Largeur)*CoefLargeur
    	{encourschamp,indChamp}..Y =({encourschamp,indChamp}..Y)*CoefHauteur
    	{encourschamp,indChamp}..Hauteur = ({encourschamp,indChamp}..Hauteur)*CoefHauteur
    FIN
    Ici j'ai choisi 7 comme nombre de champs mais je voudrais déterminer ce nombre automatiquement. Y a-t-il une solution pour connaitre le nombre de champs d'une feuille (libellés, images, boutons...) occurrence ?
    Par avance merci

  16. #16
    Membre chevronné Avatar de EDM-TAHITI
    Homme Profil pro
    Directeur Service informatique et projet développement
    Inscrit en
    Janvier 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Directeur Service informatique et projet développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 994
    Points : 1 995
    Points
    1 995
    Par défaut
    Hello,
    Il y a effectivement une fonction qui s'appelle... enumerechamps + F1 et vous aurez tout sur tout, c'est un bonheur...
    Je pense qu'a partir de cela, vous pourrez redimensionner vos champs comme vous le souhaitez, avec le taux approprié tant en hauteur qu'en largeur
    Bon code...
    le savoir est dans les livres, 'the magic touch F1'
    Amicalement
    Eric

  17. #17
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 254
    Points : 184
    Points
    184
    Par défaut
    Merci EDM-TAHITI

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    // Détermination du nombre de champs
    Nbchamp est un entier
    ResChamp est une chaîne
    ResChamp = EnumèreChamp(FEN_Fenetre1, i)
    TANTQUE ResChamp<>""
    	i++
    	Nbchamp=Nbchamp+1
    	ResChamp = EnumèreChamp(FEN_Fenetre1,i)
    FIN
    Merci à tous pour votre aide, l'ancrage n'était donc pas la solution pour redimensionner mes champs !

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 25/09/2014, 20h37
  2. Réponses: 2
    Dernier message: 17/06/2010, 09h52
  3. redimensionnement fenêtre
    Par Triomen dans le forum Windows
    Réponses: 6
    Dernier message: 08/02/2005, 00h54
  4. [BPW] Affichage clignotant lors de redimensionnement fenêtre
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 10
    Dernier message: 24/04/2004, 00h01
  5. fenêtre avec champs éditables
    Par LFC dans le forum Windows
    Réponses: 2
    Dernier message: 13/09/2003, 12h35

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