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 :

VScrollbar et index


Sujet :

VB 6 et antérieur

  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut VScrollbar et index
    Salut la compagnie !!

    J'ai développé un mastermind en VB6 pour les cours et je rencontre un soucis.
    Je m'explique :
    - Les Shapes servent a afficher les couleurs.
    - Les VScrollbar servent à changer la couleur des Shapes grâce à l'index.
    - Les Shapes sont placés sur une couleur par défaut au démarrage.

    Je rencontre un soucis lors du premier clic sur le VScrollbar.
    Ma première couleur est définie par le numéro d'index 0 et lors du clic sur le VScrollbar (pour changer la couleur) l'index passe immédiatement à 1.

    le problème c'est que ma première couleur (celle qui porte l'indice 0) n'est pas affiché dès le premier clic. il me faut donc re-cliquer sur le VScrollbar dans l'autre sens afin de décrémenter l'index jusque 0.

    Aidez moi s'il vous plait !!!
    Voici mon code :
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
     
    Dim i As Integer            'variable qui sert d'index pour les pions
    Dim a As Integer            'variable qui sert dans les indices pour le controle des pions
    Dim color(8) As String      'tableau qui contient les couleurs
    Dim couleurpc(8) As String  'table qui contient les couleurs que le pc choisira au hasard
     
    Private Sub Form_Load()
     
    Randomize           ' Fonction choix aléatoire
     
    color(0) = 255      'rouge
    color(1) = 33023    'orange
    color(2) = 65535    'jaune
    color(3) = 65280    'vert
    color(4) = 16776960 'bleu
    color(5) = 16777215 'blanc
    color(6) = 16576    'marron
    color(7) = 0        'noir
     
    ' Permet au pc de choisir 4 couleurs parmi celles qui lui sont proposées
    couleurpc(0) = color(Int(Rnd * 8))
    couleurpc(1) = color(Int(Rnd * 8))
    couleurpc(2) = color(Int(Rnd * 8))
    couleurpc(3) = color(Int(Rnd * 8))
     
    ' Initialise la variable
    a = 0
     
    ' Définit la couleur des pions de combinaison (égal aux couleurs choisie par le pc)
    combinaison(0).FillColor = couleurpc(0)
    combinaison(1).FillColor = couleurpc(1)
    combinaison(2).FillColor = couleurpc(2)
    combinaison(3).FillColor = couleurpc(3)
     
    End Sub
     
    Private Sub VScroll1_Change(Index As Integer)
    pion(Index).FillColor = color(Val(VScroll1(Index)))
    'change la couleur des pions par clic sur la barre de défilement
     
        If pion(a).FillColor <> &H8080& And pion(a + 1).FillColor <> &H8080& And pion(a + 2).FillColor <> &H8080& And pion(a + 3).FillColor <> &H8080& Then
            verifier(Int(a / 4)).Visible = True
        End If
    'affiche le bouton verifier si la couleur des 4 pions à été selectionnée.
    End Sub
     
    'affiche les boutons de correction lors du clic sur le bouton de vérification.
    Private Sub verifier_Click(Index As Integer)
    Dim x As Integer
    Dim v As Integer
    Dim compteur As Integer ' compte le nombre de pions blancs pour déterminer la fin de la partie
    x = a
    compteur = 0                                     ' Initialise la valeur du compteur à 0
     
    For i = a To a + 3                               ' Selectionne ligne par ligne
        If pion(i).FillColor = couleurpc(i - a) Then ' Si la couleur du pion est égale à la couleur du pc alors
           correct(x).FillColor = 16777215           ' Définit la couleur d'un pion de correction en blanc
           correct(x).Visible = True                 ' Affiche le pion de correction
           x = x + 1                                 ' Incrémente la variable x afin de passer au pion de correction suivant
           compteur = compteur + 1                   ' Incrémente le compteur
        Else
           For j = a To a + 3
              If (pion(i).FillColor = couleurpc(j - a)) And (i <> j) Then ' Si la couleur du pion est égale à la couleur du pc alors mais que la place du pio n'est pas identique
                 correct(x).FillColor = 0                                 ' Définit la couleur d'un pion de correction en noir
                 correct(x).Visible = True                                ' Affiche le pion de correction
                 x = x + 1                                                ' Incrémente la variable x afin de passer au pion de correction suivant
                 j = 100
              End If
           Next j
        End If
    Next i
    For i = x To a + 3
       correct(i).FillStyle = 1                       ' Sinon définit le style du pion à 1 (transparent)
       correct(i).Visible = True                      ' Affiche le pion de correction
    Next i
    For i = a To a + 3
       VScroll1(i).Visible = False                    ' Masque les scrollbars de la ligne en cour afin que l'utilisateur ne puisse changer sa selection
    Next i
    verifier(Int(a / 4)).Visible = False              ' Masque le bouton vérifier
    a = a + 4                                         ' Incrémente a de 4 afin de passer au bouton vérifier suivant
     
    'teste le compteur pour savoir si les 4 pions de corrections sont blanc et annoncer le fin de la partie
     
    Dim reponse$
    If compteur = 4 Then                'Si 4 correct blanc alors
     
       pion(v).Visible = False          'Masquage des pions suivants
       pion(v + 1).Visible = False      '
       pion(v + 2).Visible = False      '
       pion(v + 3).Visible = False      '
     
       VScroll1(v).Visible = False      'Masquage des scrollbars suivantes
       VScroll1(v + 1).Visible = False  '
       VScroll1(v + 2).Visible = False  '
       VScroll1(v + 3).Visible = False  '
     
    'Informe l'utilisteur que la partie est fini est qu'il a remporté la manche
     
       MsgBox "bravo vous avez trouvé la combinaison"
     
       Dim reponseinscription              'Déclaration de la variable, avec reponseinscription comme nom
       reponseinscription = MsgBox("Voulez vous vous inscrire aux meilleurs scores", vbYesNo + vbQuestion, "Incription aux meilleurs scores ?")
        Select Case reponseinscription
           Case vbYes                           'Si la case oui est selectionnée alors
                                                'Demande du nom par une inputbox
              Dim nom As String
              Do                              'Le do sert de controle tant que l'utilisateur n'as rien saisi
              nom = InputBox("veillez saisir votre nom s'il vous plait.", "Inscription aux meilleurs scores")
              Loop Until nom <> ""
              If Len(nom) > 6 Then
                  nom = Left(nom, 6)
              End If
              ' Vérifie que l'utilisateur a saisi quelque chose sinon on boucle et on réaffiche l'input box
              ' Affiche le nom ainsi que le temps réalisé par le joueur
              MsgBox (nom + " vous avez réalisé un temps de " + Text1 + " secondes")
              ' Ajoute le nom et le temps dans la listbox
              bonscores.scores.AddItem ("     " + nom + "                                                " + Text1)
     
           Case vbNo                                                 'Si la case non est selectionnée alors
              MsgBox "Fin de la partie, félicitation", vbInformation 'Indique à l'utilisateur que la partie est finie
        End Select
        Exit Sub 'Quitte la private sub afin que les tests suivant ne s'éffectuent pas
    End If
     
    v = ((Index + 1) * 4)
    If v <= 31 Then                 ' Si v <= 31 alors
    pion(v).Visible = True          ' Affiche les pions suivants
    pion(v + 1).Visible = True
    pion(v + 2).Visible = True
    pion(v + 3).Visible = True
    VScroll1(v).Visible = True
    VScroll1(v + 1).Visible = True  ' Affiche les scrollbars suivantes
    VScroll1(v + 2).Visible = True
    VScroll1(v + 3).Visible = True
    Else                            ' Sinon
    MsgBox "Vous avez perdu ! La soulition était :", vbExclamation ' Affiche une msg box qui annonce que le joueur a perdu
    For k = 0 To 3
    combinaison(k).Visible = True                                  ' Affiche la combinaison qu'il falait trouver
    Next k
    End If
     
    End Sub
    J'ai retiré ce qui était inutile pour trouver, j'espère ne pas en avoir retiré trop...

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Peut-être dans le load
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim T As Integer
    For T = 0 To VScroll1.Count - 1
     VScroll1(T).Value = 0
    Next T
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre émérite
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Par défaut
    Bonjour,

    le problème c'est que ma première couleur (celle qui porte l'indice 0) n'est pas affiché dès le premier clic. il me faut donc re-cliquer sur le VScrollbar dans l'autre sens afin de décrémenter l'index jusque 0.

    Aidez moi s'il vous plait !!!e problème c'est que ma première couleur (celle qui porte l'indice 0) n'est pas affiché dès le premier clic. il me faut donc re-cliquer sur le VScrollbar dans l'autre sens afin de décrémenter l'index jusque 0.
    Où est ton erreur? Je crois que en cherchant toi-même tu pourrais trouver.

    Mais essaie de faire un test avec une msgbox qui t'indiqueras les valeurs de tes variables.
    Affiche le code où se trouve l'erreur sera déjà mieux car on ne peut pas faire le travail à ta place.

    Bon courage a+

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Il n'y a pas d'erreur proprement dite mais

    Le problème est le suivant :
    voici les couleurs et les indices :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    color(0) = 255           'rouge
    color(1) = 33023        'orange
    color(2) = 65535        'jaune
    color(3) = 65280        'vert
    color(4) = 16776960   'bleu
    color(5) = 16777215   'blanc
    color(6) = 16576        'marron
    color(7) = 0              'noir
    L'indice de ma VScrollbar étant par défaut à 0 et ma première couleur ayant l'indice 0 aussi, lors du premier clic mon index passe à 1 ce qui fait que la première couleur affichée est orange et non rouge.

    je souhaiterais que le premier clic sur ma VScrollbar mette l'indice de celle ci à 0 et non à 1.

    Merci d'avance !

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Voit les propriétes du composant
    Min , Max , SmallChange , LargeChange

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Je ne sais comment faire ... j'ai beau retourner le problème dans tous les sens ...
    Aidez moi s'il vous plait !!

  7. #7
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Et si tu ajoutais un choix dans tes combos
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    color(0) = &H8080&'non choisi
    color(1) = 255      'rouge
    color(2) = 33023    'orange
    color(3) = 65535    'jaune
    color(4) = 65280    'vert
    color(5) = 16776960 'bleu
    color(6) = 16777215 'blanc
    color(7) = 16576    'marron
    color(8) = 0        'noir
    ce qui entraine quelques modification dans ton code evidemment comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    couleurpc(0) = color(Int(Rnd * 8) + 1)
    couleurpc(1) = color(Int(Rnd * 8) + 1)
    couleurpc(2) = color(Int(Rnd * 8) + 1)
    couleurpc(3) = color(Int(Rnd * 8) + 1)

  8. #8
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    J'ai simplement placé la valeur à -1 ainsi que son minimum à -1.
    Il me reste juste a savoir comment bloquer la valeur minimum de la scrollbar
    à 0 lors d'un changement.

  9. #9
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    380
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 380
    Par défaut
    Quelqu'un aurait un idée de la syntaxe ?? je n'arrive pas a me souvenir de celle ci...

  10. #10
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Citation Envoyé par Delbeke Voir le message
    Voit les propriétes du composant
    Min , Max , SmallChange , LargeChange
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonsoir,

    pas sûr de comprendre...
    A tout hasard :
    Lors du premier changement : modifier la valeur de la propriété min (accessible en lecture et écriture) à 0

    ou encore :

    dans l'évènement Change de ta scrollbar : dire que si sa propriété value < 0 alors sa propriété value = 0

  12. #12
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Et pourqoui ne pas se passer des scrollbars, tout simplement, en changeant la couleur sur le click du pion ?

  13. #13
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour, Delbeke,

    Bien évidemment,

    précisons qu'il lui faudrait dans ce cas mettre chacun de ses shapes (car ses pions sont des shapes) dans un container distinct (et ne contenant rien d'autre) sans bordure. Un Frame ferait l'affaire.
    ou utiliser autre chose que des shapes (toutefois plus adaptés pour des cercles)

  14. #14
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Salut ucfoutu,
    Effectivement, le contrôle shape ne recoit pas d'evenement click, pas de bol

Discussions similaires

  1. Message 'Duplicate index entry'
    Par Poulou dans le forum Administration
    Réponses: 13
    Dernier message: 04/05/2004, 14h57
  2. Index n'est pas a jour
    Par touhami dans le forum Paradox
    Réponses: 5
    Dernier message: 11/12/2002, 14h47
  3. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11
  4. [Technique] Index, comment font les moteurs de recherche ?
    Par bat dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 25/10/2002, 15h41
  5. Requête imbriquée et indexes INTERBASE
    Par vadim dans le forum InterBase
    Réponses: 2
    Dernier message: 06/09/2002, 16h15

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