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

VB 6 et antérieur Discussion :

[VB6] [Interface] Redimensionnement automatique


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [VB6] [Interface] Redimensionnement automatique
    Rebonjour à tous.

    Alors vu que ce forum est très vivant et visité par des gens fort compétent, je vais de ce pas poser une 2ème question.

    Je créé une appli avec diverses feuilles que j'affiche par défaut lors de leur chargement en taille maximale.

    Mais lors que j'utilisateur veut réduire cette fenetre, aucune mise en forme automatique n'est généréé et mon écran est purement et simplement tronqué.

    ma question est : comment faire en sorte que toutes mes commandes soient affichées lorsque l'utilisateur réduit la fenetre.

    Yann, tout neuf en VB6
    C'est au pied du mur que l'on voit le mieux le mur

  2. #2
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    il faut écrire une fonction (qui peut être assez lourde) qui redimensionne tous les controles sur l'évènement resize de la fenêtre

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci bien.

    Et moi qui pensait que celà se faisait tout seul

    Bon ben faudra qu je m'y attele alors

    Yann
    C'est au pied du mur que l'on voit le mieux le mur

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    C'est le principe du positionnement relatif
    il faut agir sur chacun des top et left de chacun des objets de ta form puis sur le redim du form tu appelles une fonction redimcontrols()

    avec un truc du genre

    for each control in me.controls
    ...
    next

    Sachant que le positionnement se fait par rapport à me.width et me.height
    tu pourras aussi bloquer une taille minimale de ta form qui correspond à la somme des hauteurs des objets sur une même verticale et la somme des largeurs sur une même ligne ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    tu peux éventuellement utiliser la propriété tag de tes controles ...

    sur l'événement Load de ton Formulaire
    tu parcours tous les objets et stock leur width et heigth sous forme de chaine dans Tag (ex : "2600x1588")
    et dans l'événement Resize
    tu reparcours les objets et les redimensionne en fonction de leur propriété tag en règle de trois par rapport au tag du form.

    Cette méthode est rapide mais a l'inconvénient de remplir la propriété tag.
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    Pas mal ton truc error404 !!!

    en fait tu n'a même pas besoin de remplir les tags, tu fais une fonction qui le fait tout seul

    for each control in me.controls, me.tag = (control.height ) &"x" & control.width
    puis sur le redim

    ControlSize = Split(Control.tag,"x")

    donc control(0) = height
    et control(1) = width

    et à partir de là comme le dis error404 une regle de trois par rapport au form.height et form.width

    Attention toutefois à gérer les tailles minimum de façon à ce que les labels ou autre captions soient lisibles ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    j'ai retrouvé ce code qui n'est pas de moi et qui fonctionne selon le principe que j'avais énoncé ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Private Sub Form_Load()
    On Error Resume Next
        Me.Tag = CStr(Me.Width) & ":" & CStr(Me.Height)
        For Each object In Me
            object.Tag = CStr(object.X1) & ":" & CStr(object.Y1) & ";" & CStr(object.X2) & "!" & CStr(object.Y2)
            object.Tag = CStr(object.Width) & ":" & CStr(object.Height) & ";" & CStr(object.Left) & "!" & CStr(object.Top)
        Next object
    End Sub
     
    Private Sub Form_Resize()
    On Error Resume Next
        For Each object In Me
            'pour les graphiques
            object.X1 = Val(Mid(object.Tag, 1, InStr(object.Tag, ":") - 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
            object.Y1 = Val(Mid(object.Tag, InStr(object.Tag, ":") + 1, Len(object.Tag) - InStr(object.Tag, ":") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
            object.X2 = Val(Mid(object.Tag, InStr(object.Tag, ";") + 1, Len(object.Tag) - InStr(object.Tag, ";") + 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
            object.Y2 = Val(Mid(object.Tag, InStr(object.Tag, "!") + 1, Len(object.Tag) - InStr(object.Tag, "!") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
            'pour le reste
            object.Width = Val(Mid(object.Tag, 1, InStr(object.Tag, ":") - 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
            object.Height = Val(Mid(object.Tag, InStr(object.Tag, ":") + 1, Len(object.Tag) - InStr(object.Tag, ":") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
            object.Left = Val(Mid(object.Tag, InStr(object.Tag, ";") + 1, Len(object.Tag) - InStr(object.Tag, ";") + 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
            object.Top = Val(Mid(object.Tag, InStr(object.Tag, "!") + 1, Len(object.Tag) - InStr(object.Tag, "!") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
        Next object
    End Sub
    Ne mettez pas "Problème" dans vos titres, par définition derrière toute question se cache un problème
    12 tutoriels Access



  8. #8
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Un GGGGGGGGIIIGGGAAANNNTTTEEESSSQQQUUUEEEEE merci à vous tous.

    Yann (s'en va heureux comme un pinson )
    C'est au pied du mur que l'on voit le mieux le mur

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

Discussions similaires

  1. [VB6] [Interface] ComboBox à plusieurs colonnes
    Par mtl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/03/2004, 17h35
  2. [VB6] [Interface] Nbre de contrôles maxi dans une feuille
    Par Midou dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 13/10/2002, 16h09
  3. [VB6] [Interface] Horloge 7 segments
    Par selenay dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/10/2002, 16h15
  4. [VB6] [Interface] Tester le Type de Controle
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 16/09/2002, 09h51
  5. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50

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