1. #1
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 256
    Points : 115
    Points
    115

    Par défaut Taille des fenêtres, des textes et des contrôles selon le style visuel de Windows

    Bonsoir à tous,

    Je rencontre le problème suivant, avec un programme fait avec VB5.

    Le programme peut marcher sur les différentes versions de Windows depuis Windows 1995

    Or en fonction du "style graphique" de windows, la bordure des fenêtres est plus ou moins épaisse, de même pour les textes

    Du coup il peut arriver que mes contrôles deviennent trop petits pour le texte, mais surtout que le positionnement dans la fenêtre ne soit plus correct

    C'est notamment le cas des fenêtres redimensionnables, dans lesquelles je recalcule la position et la taille des contrôles dans l’événement form.resize

    Comment faire ?

    Il faudrait que je récupère les dimenssions internes de la fenêtre.

    J'aurais aussi et toujours besoin des dimenssions externe (par exemple pour aligner plusieurs petites fenêtres)

    Merci

    A bientôt

  2. #2
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 995
    Points : 7 769
    Points
    7 769

    Par défaut

    Salut

    la bordure des fenêtres est plus ou moins épaisse
    Pour l’intérieur de la fenêtre Me.ScaleHeight et Me.ScaleWidth, unités des dimensions renvoyées suivant le ScaleMode de la dite fenêtre.
    Pour l’extérieur de la fenêtre Me.Height, Me.Width, Me.Top et Me.Left, unités toujours renvoyées en Twips.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Bordure As Integer, BarTitr As Integer
    Bordure = (Me.Width - Me.ScaleWidth) / 2
    BarTitr = Me.Height - Me.ScaleHeight - (Bordure * 2)
    contrôles deviennent trop petits pour le texte
    Une façon simple, utiliser un Label avec propriété AutoSeize = True et Visible = False.

    Par exemple pour redimensionner un Textbox, attribuer le texte au Label invisible, et à la suite donner le même Width et Height que ce label au TextBox.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 256
    Points : 115
    Points
    115

    Par défaut

    Citation Envoyé par ProgElecT Voir le message
    Salut

    Pour l’intérieur de la fenêtre Me.ScaleHeight et Me.ScaleWidth, unités des dimensions renvoyées suivant le ScaleMode de la dite fenêtre.
    Pour l’extérieur de la fenêtre Me.Height, Me.Width, Me.Top et Me.Left, unités toujours renvoyées en Twips.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Bordure As Integer, BarTitr As Integer
    Bordure = (Me.Width - Me.ScaleWidth) / 2
    BarTitr = Me.Height - Me.ScaleHeight - (Bordure * 2)
    C'est bien ça ! Je m'étais toujours demandé la différence entre ScaleWidth et Width, je pensais que c'était juste pour ces histoires d'unités en twips

    Pas bête du tout la façon de calculer BarTitr... Ce genre de truc devient vite énervant, surtout qu'on peut difficilement avoir sous la main un ordinateur avec chaque version de windows

    Au fait je crois me souvenir que c'était toi qui m'avait envoyé, après avoir testé CiDess il y a des années, un fichier .manifest alors que j'ignorais complètement ce à quoi cela pouvait servir... Si oui as-tu vu mon autre post à ce sujet ? Cette fois-ci je pense avoir vraiment compris le rôle des .manifest mais on est jamais sûr de rien dans le monde du VB...

  4. #4
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    décembre 2004
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 995
    Points : 7 769
    Points
    7 769

    Par défaut

    Au fait je crois me souvenir que c'était toi qui m'avait envoyé, après avoir testé CiDess il y a des années
    StretchBlt et taille de l'image (Juin 2008 ..... le temps passe)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 256
    Points : 115
    Points
    115

    Par défaut

    Citation Envoyé par ProgElecT Voir le message
    StretchBlt et taille de l'image (Juin 2008 ..... le temps passe)
    Oui le temps passe... Cela nous rajeunis pas en effet Donc tu es en retraite maintenant ?

    Le temps est relatif aussi, avec les maths qui semblent éternelles, nous qui continuons à maintenir des logiciels qui ont 20 ans, et les nouvelles versions de Windows qui apparaissent tous les 2 ans

    Au moins les outils pour tour à bois de mon grand-père marchent toujours avec les tours actuels

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    juin 2007
    Messages
    256
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juin 2007
    Messages : 256
    Points : 115
    Points
    115

    Par défaut

    Citation Envoyé par ProgElecT Voir le message
    Pour l’intérieur de la fenêtre Me.ScaleHeight et Me.ScaleWidth, unités des dimensions renvoyées suivant le ScaleMode de la dite fenêtre.
    Pour l’extérieur de la fenêtre Me.Height, Me.Width, Me.Top et Me.Left, unités toujours renvoyées en Twips.
    Petite question : vaut-il mieux laisser le ScaleMode de la fenêtre en Twips ?

    Ou sinon, avec un ScaleMode en pixels cela n'aura aucune importance tant que l'on fait les conversions avec TwipsPerPixelX et TwipsPerPixelX ?

    Merci

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

Discussions similaires

  1. [XL-2010] Remplacer du texte dans des zones de texte sur Word
    Par macmun dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 20/07/2016, 15h00
  2. Problème de miniature des fenêtres dans la barre des tâches
    Par parazitenew dans le forum Windows 7
    Réponses: 0
    Dernier message: 17/03/2015, 00h16
  3. Réponses: 3
    Dernier message: 06/06/2012, 19h07
  4. [WD-2007] Récupérer des liens OLE définis dans des zones de texte
    Par jejedi dans le forum VBA Word
    Réponses: 0
    Dernier message: 24/10/2011, 18h33
  5. Réponses: 5
    Dernier message: 17/03/2010, 17h59

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