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] Scrollbar dans une frame avec des textbox


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut [VB6] Scrollbar dans une frame avec des textbox
    Bonjour à tous,

    J'ai un formulaire avec une frame
    A l'interieur de cette frame il y a:
    Text1(i), Text2(i) et Label1(i).
    A chaque fois que je clique sur La text1(i), il me rajoute une ligne i+1

    Il y a aussi une scrollbar

    Voilà ma question :
    Comment peut-on faire : si je rajoute une textbox qui n'est plus visible dans ma frame alors la textbox se met automatiquement en haut et la scrollbar se retressi.

    Je sais pas si je me suis fait comprendre?

    Dites le si ce n'est pas compréensible?

    Merci d'avance pour votre aide.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si tu pouvais reformuler...

    merci

    A+

    Edit
    Tu veux raccourcir ton scrollbar pour laisser la place à ton textbox ? C'est ça ?

  3. #3
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    J'ai une frame
    A l'interieur de celle ci j'ai Text1(0), Text2(0) et Label1(0)
    Lorsque je press une touche sur Text1(0) il me rajoute une ligne avec :
    Text1(1), Text2(1) et Label1(1) Et ainsi de suite

    Mais il y a un problème mon frame est trop petit en longueur et lorsque je presse une touche de ma derniere Text1(n) alors je ne vois pas la ligne que j'ai rajouter.

    J'aimerai que grace à une scrollbar lorsque je ne vois cette derniére ligne alors il me met automatiquement la derniere ligne que je vois et celle que je ne vois pas tout en haut de la frame.

    Voilà j'espere avoir était le plus clair possible.

    Merci d'avance.

  4. #4
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Ici c'est la frame qui est representer en dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ---------------------------------------  ^ 
    | Text1(0) Text2(0) Label1(0)      |  | la c'est la scrollbar soit à 
    | Text1(1) Text2(1) Label1(1)      |  | l'exterieur ou à l'interieur de la 
    |                                  |  | frame 
    |                                  |  | 
    |                                  |  | 
    | Text1(n) Text2(n) Label1(n)      |  | 
    ---------------------------------------
    Donc Quand j'arrive à Text1(n) lorsque je presse cette textbox normalement il y a une ligne : Text1(n+1) Text2(n+1) et Label(n+1) qui se rajoute mais la ou ne ne la voit pas alors je voudrais que cela face :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    -----------------------------------------------  ^ 
    | Text1(n)     Text2(n)      Label1(0)     |  | 
    | Text1(n+1)   Text2(n+1)    Label1(,+1)   |  |
    |                                          |  | 
    |                                          |  | 
    |                                          |  | 
    -----------------------------------------------
    Bon si ce n'est pas clair je vais faire une capture ecran.

    Ou puis je trouver un herbergeur, pour la capture ecran?

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Alors voilà l'url de mes images :



    Cette image montre que lorsque j'ecrit dans ma dernière ligne on ne voit pas ligne +1.

    Et cette image montre ce que je voudrai faire lorsque ma ligne +1 n'est pas visible, Donc cette image prend la derniere ligne de l'image precedent et la scrollbar et descendu :



    Mais comment le coder?

    Merci d'avance.

    Ps: La frame n'as pas de contour, et donc on ne la remarque pas et la scrollbar et dans la frame.

  6. #6
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Salut

    Ton Frame est un conteneur un peut comme une Form ou un PictureBox. Tu auras donc besoin d'un autre conteneur dans le Frame, porbablement un PictureBox sans les bordures. Tu mets tes textBox dans le PictureBox ensuite tu mets le picture box et le scrollbar dans le Frame. Si les coordonnées du dernier TextBox ajouté déborde de la taille du PictureBox, tu affiche la ScrollBar. Quand l'utilisateur défile, c'est le PictureBox que tu déplaces.

  7. #7
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Oki j'ai oublié de vous dire que ma TextBox, Text1, est dans une pictureBox, Picture1. et Ma TextBox, Text2, est dans une pictureBox, Picture2. C'est pour faire un alignement centré verticalement.

  8. #8
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    idem

    tu mets tous les picturebox dans un seul plus grand pictureBox qui lui est dans le Frame.

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Je suis allé voir...
    Tu mets déjà un scrollbar à ta framme et ensuite...
    Si tu mets une valeur dans Frame.scrollHeight, déjà tu verras plus clair
    Essaie de mettre 300 en dur dans cette propriété.

    A+

    Edit
    J'ai corrigé une erreur : Frame.scrollHeight et non scrollbar....

  10. #10
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Il faut qu'elle soit plus petite que ma frame?
    Et ce que je peux agrandir ma picturebox lorsque je rentre queqluechose dans ma text1(n)?

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, tu peux redimensionner tout ce que tu veux, pour ça tu as la propriété height de tous contrôles.

    A+

    Edit
    Un bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Picture1.height = Picture1.height + Text1.height
    Peut-être dans ce cas là l'objet Userform est-il nécessaire... Tu essaies

  12. #12
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Excuses-moi, j'avais oublié ce détail. Oui, en effet, il faut agrandir le pictureBox aux dimensions nécessaires. Un conseil: crées toi quelques constantes du genre MargesVerticales, MargesHorizontales pour les marges autour de tes peitits PicruteBox; HautControle, LargControle pour la largeur et la hauteur de tes petits PictureBox; Interligne pour l'espace entre ceux-ci: HautMin pour la taille minimale du grand PictureBox et finalement une variable globale privée pour la hauteur actuelle du grand PictureBox. Tu devras ajuster la propriété Max du scrollBar sur cette dimension.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonjour,
    Vas voir dans la FAQ.

    http://vb.developpez.com/faq/?page=Autres#scrolling

    jpleroisse

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello,
    J'ai envoyé un exemple à bébé69, on peut attendre 3 minutes qu'il donne de ses nouvelles

  15. #15
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    Bon! finalement! Décrire quelque chose de mémoire et le faire pour de vrai, c'est deux!

    Tu as besoins de deux conteneurs et d'une scrollBar. Tu dois pouvoir masquer les bordures de tes conteneurs au besoin. De toute façons, le conteneur intérieur ne dois pas avoir de bordures. C'est l'équivalent de faire un "ScrollBox" à bras. Ce contrôle existe sous d'autres environnements (Java dans JBuilder, par exemple) mais je ne l'ai pas vu sous VB6. Une fois tes éléments placés dans ton 'ScrollBox home maid', rien ne t'empêche de placer tout ça dans un Frame pour fins de présentation. Code exemple testé au collège sous VB6:
    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Option Explicit
    Private Const Marge As Integer = 240
    Private Const Hauteur As Integer = 285
     
    Private Sub cmdAjouterChamp_Click()
        Dim i As Integer
        i = txtChamp.Count
        Load txtChamp(i)
        With txtChamp(i)
            .Top = txtChamp(i - 1).Top + Marge + Hauteur
            .Visible = True
            If (.Top + .Height) > picContent.Height Then
                picContent.Height = .Top + .Height + Marge
            End If
        End With
        verifierTaille
    End Sub
     
    Private Sub Form_Load()
        scrlPic.Min = 0
        scrlPic.Max = picScrollPic.Height
        scrlPic.LargeChange = Marge + Hauteur
        If picScrollPic.Height <= picContent.Height Then
            scrlPic.Visible = False
          Else
            scrlPic.Visible = True
        End If
    End Sub
     
    Private Sub verifierTaille()
        If picContent.Height <= picScrollPic.Height Then
            scrlPic.Visible = False
          Else
            scrlPic.Visible = True
        End If
    End Sub
     
    Private Sub picContent_Resize()
        scrlPic.Max = picContent.Height - picScrollPic.Height
    End Sub
     
    Private Sub scrlPic_Change()
        picContent.Top = 0 - scrlPic.Value
    End Sub
     
    Private Sub scrlPic_Scroll()
        picContent.Top = 0 - scrlPic.Value
    End Sub
    Marge contient la valeur de la propriété Top du premier champ de saisie (placé ou non dans un PictureBox... c'est toi qui voit). Tu mets une valeur plus petit si tu veux que l'espace entre tes champs soit moins important.
    Hauteur est la hauteur d'un champ. Ça évite de toujours réinterroger la prorpiété Heihgt de tes champs.
    picScrollPic est le conteneur fixe extérieur.
    picContent est le conteneur de tes composants. C'est celui qu'il faut redimentionner.
    scrlPic est le ScrollBar.

    Si c'est du code que tu compte réutiliser, il est souhaitable d'en faire un contrôle ActiveX personnalisé en pensant d'y ajouter une HScrollBar et de faire réagir ton scrollBox pour des redimentionnement en largeur.

  16. #16
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    La scrollbar, tu la mais dans le frame principal ou dans le frame secondaire?

  17. #17
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    à l'extérieur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // schema
     
    picBoxExt
    -------------------- ---
    |  --------------  | |^| ScrollBar
    |  |picBoxInt   |  | | |
    |  |            |  | | |
    |  |            |  | | |
    |  |            |  | | |
    |  --------------  | |v|
    -------------------- ---
    Ce sont ces trois éléments qui forment le ScrollBox.
    Tes champs (composés d'un PictureBox et d'in TextBox) sont placés dans le PictureBox intérieur. Tout le tintouin est placé dans ton Frame si tu désires avoir une présentation avec un frame. Assures-toi alors que les deux pictureBox de ton ScrollBox n'ont pas de bordures. Pour que ça fonctionne bien, du point de vue de l'apparence j'entends, le PictureBox intérieur ne doit pas avoir de bordure visible.

  18. #18
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    C'est bon j'ai fais la scrollbar mais il y a un hic, la scrollbar marche mais pas correctement.

    Je vous explique quand la dernière ligne n'est pas visible alors je descend ma scrollbar tout en bas pour voir la ligne mais lorsque je remet une ligne, elle est invisible alors la scrollbar est tout en bas et pour que je vois la ligne je dois remonter la scrollbar et la redescendre.

    Je vous met le code de la scrollbar :

    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
     
    Private diff As Long
     
    Private Sub Scroll1_Change()
    diff = Frame2.Height - Frame1.Height
    Frame2.Top = diff * Scroll1.Value / 100
    End Sub
     
    Private Sub Scroll1_Scroll()
    If Scroll1.Value < Scroll1.Max Then
        Scroll1.Value = Scroll1.Value + 10
    End If
    diff = Frame2.Height - Frame1.Height
    Frame2.Top = diff * Scroll1.Value / 100
    End Sub

    Merci d'avance.

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    As-tu essayé en modifiant en dur ou par soft, la valeur de Scrollheight ?
    Arrange-toi pour que ScrollTop ne soit jamais au max pour afficher le dernier textbox créé, ainsi tu auras toujours de la marge. Faut jouer avec la valeur de Scrollheight. Plus elle est importante, plus tu as de lattitude dans le déplacement du curseur.

    Tu dis

    A+


    J'essaie de regarder ton rar ce we

  20. #20
    Membre régulier
    Inscrit en
    Octobre 2004
    Messages
    277
    Détails du profil
    Informations forums :
    Inscription : Octobre 2004
    Messages : 277
    Points : 76
    Points
    76
    Par défaut
    Ben je t'ai dejà dit que je n'avais pas de .ScrollHeight et .ScrollTop car je travaille sous vb6.

    Mais sinon je vais essayer de faire un truc comme tu as dis mais avec le .Height et le .Top de ma Scroll

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Critères avec opérateurs dans une requête avec des champs calculés
    Par lmollard dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 11/05/2008, 18h53
  2. [Struts] reset dans une ActionForm avec des int
    Par mariemor64 dans le forum Struts 1
    Réponses: 19
    Dernier message: 18/05/2006, 12h47
  3. [SQL] Requête dans une requête...avec des INNER JOIN!
    Par PedroBD dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 06/04/2006, 08h26
  4. rollover dans une image avec des zones cliquables
    Par brasco06 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 23/02/2006, 11h15

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