VB6 - Problème condition

Bonjour,

J'ai un problème avec un programme en vb6.
Dans ce programme, j'ai un combobox nommé cmbChoix,
J'ai ajouté à ce combobox par code plusieurs items.
A côté de cela j'ai 3 scrollbars notés HScroll1, HScroll2 et HScroll 3 (désolé pour la convention hongroise)
Les 3 scrollbars génèrent une couleur RGB (respectivement pour chacun, Red, Green, Blue)
Je voudrais dans une textbox faire apparaître plusieurs code RGB comem ceci :

[CHATBOX]
R=255
G=255
B=255
[CHATTEXTBOX]
R=255
G=255
B=255
[BACKGROUND]
R=255
G=255
B=255
[SPELLLIST]
R=255
G=255
B=255
[WHOLIST]
R=255
G=255
B=255
[NEWCHAR]
R=255
G=255
B=255

Et plutôt que de créer 3 scrollbars pour chacun, j'ai inseré le fameux combobox qui soit disant permet le choix entre les différentes couleurs ([CHATBOX], [CHATTEXTBOX] etc...). Théoriquement, la personne choisit la couleur qu'elle veut via le combobox et ensuite via un système de variable (une variable par couleur : Red de CHATBOX, Green de CHATBOX etc...), les 3 uniques scrollbars écrivent dans les variables.

Voila le code, vous comprendrez peut-être mieux.

'Déclaration des variables pour chaque paramètre (R...
Dim CHATBOXR As Long
Dim CHATBOXG As Long
Dim CHATBOXB As Long
Dim CHATTEXTBOXR As Long
Dim CHATTEXTBOXG As Long
Dim CHATTEXTBOXB As Long
Dim BACKGROUNDR As Long
Dim BACKGROUNDG As Long
Dim BACKGROUNDB As Long
Dim SPELLLISTR As Long
Dim SPELLLISTG As Long
Dim SPELLLISTB As Long
Dim WHOLISTR As Long
Dim WHOLISTG As Long
Dim WHOLISTB As Long
Dim NEWCHARR As Long
Dim NEWCHARG As Long
Dim NEWCHARB As Long

'Le fameux Combobox permettant de choisir la couleur à modifier ([CHATBOX], [BACKGROUND]...)
Private Sub cmbChoix_Change()
If cmbChoix.ListIndex = 1 Then
CHATBOXR = HScroll1.Value
CHATBOXG = HScroll2.Value
CHATBOXB = HScroll3.Value
End If

'Commande d'actualisation du rendu final (txtResulat)
RefreshRes

End Sub

'Add des items du combo
Private Sub Form_Load()
cmbChoix.AddItem "[CHATBOX]"
cmbChoix.AddItem "[CHATTEXTBOX]"
cmbChoix.AddItem "[BACKGROUND]"
cmbChoix.AddItem "[SPELLLIST]"
cmbChoix.AddItem "[WHOLIST]"
cmbChoix.AddItem "[NEWCHAR]"
txtCouleurRouge.Text = HScroll1.Value
txtCouleurVert.Text = HScroll2.Value
txtCouleurBleu.Text = HScroll3.Value
lblResultat.BackColor = RGB(HScroll1, HScroll2, HScroll3)
RefreshRes

End Sub

Private Sub HScroll1_Change()
Couleur
RefreshRes
End Sub

Private Sub HScroll1_Scroll()
Couleur
RefreshRes
End Sub

Private Sub HScroll2_Change()
Couleur
RefreshRes
End Sub

Private Sub HScroll2_Scroll()
Couleur
RefreshRes
End Sub

Private Sub HScroll3_Change()
Couleur
RefreshRes
End Sub

Private Sub HScroll3_Scroll()
Couleur
RefreshRes
End Sub

Private Sub Couleur()
txtCouleurRouge.Text = HScroll1.Value
txtCouleurVert.Text = HScroll2.Value
txtCouleurBleu.Text = HScroll3.Value
lblResultat.BackColor = RGB(HScroll1, HScroll2, HScroll3)
End Sub

'Fonction d'actualisation
Private Sub RefreshRes()
txtResultat.Text = "[POLICE]" & vbNewLine & "Police=" & txtPolice.Text & vbNewLine & "PoliceSize=" & txtPoliceSize.Text & vbNewLine & "PoliceChat=" & txtPoliceChat.Text & vbNewLine & "[CHATBOX]" & vbNewLine & "R=" & CHATBOXR & vbNewLine & "G=" & CHATBOXG & vbNewLine & "B=" & CHATBOXB & vbNewLine & "[CHATTEXTBOX]" & vbNewLine & "R=" & CHATTEXTBOXR & vbNewLine & "G=" & CHATTEXTBOXG & vbNewLine & "B=" & CHATTEXTBOXB & vbNewLine & "[BACKGROUND]" & vbNewLine & "R=" & BACKGROUNDR & vbNewLine & "G=" & BACKGROUNDG & vbNewLine & "B=" & BACKGROUNDB & vbNewLine & "[SPELLLIST]" & vbNewLine & "R=" & SPELLLISTR & vbNewLine & "G=" & SPELLLISTG & vbNewLine & "B=" & SPELLLISTB & vbNewLine & "[WHOLIST]" & vbNewLine & "R=" & WHOLISTR & vbNewLine & "G=" & WHOLISTG & vbNewLine & "B=" & WHOLISTB & vbNewLine & "[NEWCHAR]" & vbNewLine & "R=" & NEWCHARR & vbNewLine & "G=" & NEWCHARG & vbNewLine & "B=" & NEWCHARB & vbNewLine
End Sub

Private Sub txtPolice_Change()
RefreshRes
End Sub

Private Sub txtPoliceChat_Change()
RefreshRes
End Sub

Private Sub txtPoliceSize_Change()
RefreshRes
End Sub


Quant à la fonction couleur, c'est pour autre chose (le test graphique via forecolor d'un label de la couleur RGB définie par les 3 scrollbars).

Quand je lance le programme, il n'y à pas d'erreur Pop-up mais il ne se passe rien lors du 'change()' et du 'scroll()' des scrollbars. Savez-vous comment faire fonctionner cette condition ?

Merci beaucoup d'avance à toutes vos réponses.
Cordialement, Fenril'Skanenruf.
Configuration: Windows XP
Internet Explorer 6.0

4 réponses

  1. Merci beaucoup ça donne mieux, je le rajoute à mon programme. Merci beaucoup Amigo.
    Et Adios Amigo ^^
    1. Au cas ou tu serais encore là

      j'ai amélioré le code pour que les couleurs stockées dans les variables soient reprises dans les scrollbars et le label à chaque nouvelle sélection. Parce que tel que c'est maintenant, les variables prennent la valeur de la couleur courante et perdent leur valeur anciennement stockée.

      Essaye et observe le resultat.

      'Déclaration des variables pour chaque paramètre (R...
      Dim CHATBOXR As Long
      Dim CHATBOXG As Long
      Dim CHATBOXB As Long
      Dim CHATTEXTBOXR As Long
      Dim CHATTEXTBOXG As Long
      Dim CHATTEXTBOXB As Long
      Dim BACKGROUNDR As Long
      Dim BACKGROUNDG As Long
      Dim BACKGROUNDB As Long
      Dim SPELLLISTR As Long
      Dim SPELLLISTG As Long
      Dim SPELLLISTB As Long
      Dim WHOLISTR As Long
      Dim WHOLISTG As Long
      Dim WHOLISTB As Long
      Dim NEWCHARR As Long
      Dim NEWCHARG As Long
      Dim NEWCHARB As Long
      Dim cmbClicked As Boolean
      
      
      Private Sub cmbChoix_Click()
      cmbClicked = True
      Select Case cmbChoix.ListIndex
          Case 0
          HScroll1.Value = CHATBOXR
          HScroll2.Value = CHATBOXG
          HScroll3.Value = CHATBOXB
          
          Case 1
          HScroll1.Value = CHATTEXTBOXR
          HScroll2.Value = CHATTEXTBOXG
          HScroll3.Value = CHATTEXTBOXB
          
          Case 2
          HScroll1.Value = BACKGROUNDR
          HScroll2.Value = BACKGROUNDG
          HScroll3.Value = BACKGROUNDB
          
          Case 3
          HScroll1.Value = SPELLLISTR
          HScroll2.Value = SPELLLISTG
          HScroll3.Value = SPELLLISTB
          
          Case 4
          HScroll1.Value = WHOLISTR
          HScroll2.Value = WHOLISTG
          HScroll3.Value = WHOLISTB
          
          Case 5
          HScroll1.Value = NEWCHARR
          HScroll2.Value = NEWCHARG
          HScroll3.Value = NEWCHARB
      End Select
      Couleur
      RefreshRes
      cmbClicked = False
      End Sub
      
      'Add des items du combo
      Private Sub Form_Load()
      cmbChoix.AddItem "[CHATBOX]"
      cmbChoix.AddItem "[CHATTEXTBOX]"
      cmbChoix.AddItem "[BACKGROUND]"
      cmbChoix.AddItem "[SPELLLIST]"
      cmbChoix.AddItem "[WHOLIST]"
      cmbChoix.AddItem "[NEWCHAR]"
      cmbChoix.ListIndex = 0
      cmbClicked = False
      txtCouleurRouge.Text = HScroll1.Value
      txtCouleurVert.Text = HScroll2.Value
      txtCouleurBleu.Text = HScroll3.Value
      lblResultat.BackColor = RGB(HScroll1, HScroll2, HScroll3)
      RefreshRes
      
      End Sub
      
      Private Sub HScroll1_Change()
      If cmbClicked Then Exit Sub
      Couleur
      RefreshRes
      End Sub
      
      Private Sub HScroll1_Scroll()
      Couleur
      RefreshRes
      End Sub
      
      Private Sub HScroll2_Change()
      If cmbClicked Then Exit Sub
      Couleur
      RefreshRes
      End Sub
      
      Private Sub HScroll2_Scroll()
      Couleur
      RefreshRes
      End Sub
      
      Private Sub HScroll3_Change()
      If cmbClicked Then Exit Sub
      Couleur
      RefreshRes
      End Sub
      
      Private Sub HScroll3_Scroll()
      Couleur
      RefreshRes
      End Sub
      
      Private Sub Couleur()
      txtCouleurRouge.Text = HScroll1.Value
      txtCouleurVert.Text = HScroll2.Value
      txtCouleurBleu.Text = HScroll3.Value
      lblResultat.BackColor = RGB(HScroll1, HScroll2, HScroll3)
      
      Select Case cmbChoix.ListIndex
          Case 0
          CHATBOXR = HScroll1.Value
          CHATBOXG = HScroll2.Value
          CHATBOXB = HScroll3.Value
          
          Case 1
          CHATTEXTBOXR = HScroll1.Value
          CHATTEXTBOXG = HScroll2.Value
          CHATTEXTBOXB = HScroll3.Value
          
          Case 2
          BACKGROUNDR = HScroll1.Value
          BACKGROUNDG = HScroll2.Value
          BACKGROUNDB = HScroll3.Value
          
          Case 3
          SPELLLISTR = HScroll1.Value
          SPELLLISTG = HScroll2.Value
          SPELLLISTB = HScroll3.Value
          
          Case 4
          WHOLISTR = HScroll1.Value
          WHOLISTG = HScroll2.Value
          WHOLISTB = HScroll3.Value
          
          Case 5
          NEWCHARR = HScroll1.Value
          NEWCHARG = HScroll2.Value
          NEWCHARB = HScroll3.Value
      End Select
      
      End Sub
      
      'Fonction d'actualisation
      Private Sub RefreshRes()
      txtResultat.Text = "[POLICE]" & vbNewLine & "Police=" & txtPolice.Text _
      & vbNewLine & "PoliceSize=" & txtPoliceSize.Text & vbNewLine _
      & "PoliceChat=" & txtPoliceChat.Text & vbNewLine & "[CHATBOX]" _
      & vbNewLine & "R=" & CHATBOXR & vbNewLine & "G=" & CHATBOXG _
      & vbNewLine & "B=" & CHATBOXB & vbNewLine & "[CHATTEXTBOX]" _
      & vbNewLine & "R=" & CHATTEXTBOXR & vbNewLine & "G=" & CHATTEXTBOXG _
      & vbNewLine & "B=" & CHATTEXTBOXB & vbNewLine & "[BACKGROUND]" _
      & vbNewLine & "R=" & BACKGROUNDR & vbNewLine & "G=" & BACKGROUNDG _
      & vbNewLine & "B=" & BACKGROUNDB & vbNewLine & "[SPELLLIST]" _
      & vbNewLine & "R=" & SPELLLISTR & vbNewLine & "G=" & SPELLLISTG _
      & vbNewLine & "B=" & SPELLLISTB & vbNewLine & "[WHOLIST]" _
      & vbNewLine & "R=" & WHOLISTR & vbNewLine & "G=" & WHOLISTG _
      & vbNewLine & "B=" & WHOLISTB & vbNewLine & "[NEWCHAR]" _
      & vbNewLine & "R=" & NEWCHARR & vbNewLine & "G=" & NEWCHARG _
      & vbNewLine & "B=" & NEWCHARB & vbNewLine
      End Sub
      
      Private Sub txtPolice_Change()
      RefreshRes
      End Sub
      
      Private Sub txtPoliceChat_Change()
      RefreshRes
      End Sub
      
      Private Sub txtPoliceSize_Change()
      RefreshRes
      End Sub
      
      1. Bonjour

        Voici comment corriger le code
        'Add des items du combo
        Private Sub Form_Load()
        cmbChoix.AddItem "[CHATBOX]"
        cmbChoix.AddItem "[CHATTEXTBOX]"
        cmbChoix.AddItem "[BACKGROUND]"
        cmbChoix.AddItem "[SPELLLIST]"
        cmbChoix.AddItem "[WHOLIST]"
        cmbChoix.AddItem "[NEWCHAR]"
        cmbChoix.ListIndex = 0 '<------------------------ici initialiser le ComboBox
        txtCouleurRouge.Text = HScroll1.Value
        txtCouleurVert.Text = HScroll2.Value
        txtCouleurBleu.Text = HScroll3.Value
        lblResultat.BackColor = RGB(HScroll1, HScroll2, HScroll3)
        RefreshRes
        
        End Sub
        


        Supprimer la procédure Private Sub cmbChoix_Change_() qui ne sert pas

        la remplacer par
        Private Sub cmbChoix_Click()
        Couleur
        RefreshRes
        End Sub
        


        Enfin completer la procedure Couleur()
        Private Sub Couleur()
        txtCouleurRouge.Text = HScroll1.Value
        txtCouleurVert.Text = HScroll2.Value
        txtCouleurBleu.Text = HScroll3.Value
        lblResultat.BackColor = RGB(HScroll1, HScroll2, HScroll3)
        
        Select Case cmbChoix.ListIndex
            Case 0
            CHATBOXR = HScroll1.Value
            CHATBOXG = HScroll2.Value
            CHATBOXB = HScroll3.Value
            
            Case 1
            CHATTEXTBOXR = HScroll1.Value
            CHATTEXTBOXG = HScroll2.Value
            CHATTEXTBOXB = HScroll3.Value
            
            Case 2
            BACKGROUNDR = HScroll1.Value
            BACKGROUNDG = HScroll2.Value
            BACKGROUNDB = HScroll3.Value
            
            Case 3
            SPELLLISTR = HScroll1.Value
            SPELLLISTG = HScroll2.Value
            SPELLLISTB = HScroll3.Value
            
            Case 4
            WHOLISTR = HScroll1.Value
            WHOLISTG = HScroll2.Value
            WHOLISTB = HScroll3.Value
            
            Case 5
            NEWCHARR = HScroll1.Value
            NEWCHARG = HScroll2.Value
            NEWCHARB = HScroll3.Value
        End Select
        
        End Sub
        


        C'est le résultat recherché?

        A+.
        1. Merci beaucoup Amigo,

          C'est parfaitement le résultat que je voulais. Je ne connaissais la fonction SELECT CASE que tu QBasic ^^
          J'ai donc eu l'idée de me tourner vers les variables.
          Merci beaucoup encore.

          Fenril'Skanenruf.
      2. Bonjour,

        J'ai essayé ce programme

        j'ai fixé la propriété Max des scrollbars à 255

        j'ai dimensionné txtResultat de manière à afficher une dizaine de lignes, mis la propiété Multiligne à True et la propriété Scrollbars à Vertical

        Ce que j'observe:
        En déplaçant les scrollbars la couleur du label change
        La valeur des scrollbars s'inscrit dans les textbox txtCouleurBleu txtCouleurRouge et txtCouleurVert
        En remplissant txtPolice txtPoliceChat et txtPoliceSize la valeur correspondante s'inscrit dans txtResultat

        Il ne se passe rien quand je fais un choix avec cmbChoix, mais c'est normal vu qu'il n'y a pas de code pour ça.

        Salut.
        1. Merci de ta réponse Amigo,

          Mais je m'aperçois que j'ai mal formulé ma question. Je voudrais s'il vous plait la syntaxe avec un exemple pour que selon le cmbChoix les scrollbars (que j'ai également fixé à max. 255) inscrivent dans les variables pour que le txtResultat soit modifié en temps réèl. Mon but est de placer une variable pour chaque paramètre (R, G, B...) de chaque couleur ([CHATBOX]...) dans le txtResultat. C'est ce que j'ai fait puis selon cmbChoix faire que les 3 scrollbars inscrivent dans les 3 variables correspondant à une couleur (celle sélectionnée dans le combo). Par conséquent les variables serianet modifiée selon le combo et donc le resultat final se retrouverait dans le txtResultat.

          Peut-être tout simplement que ma méthode variables est mauvaise mais c'est la seule que je pense pouvoir appliquer. Pouvez-vous s'il vous plait modifier le code suivent que j'ai mis au changement du combobox pour que les 3 scrollbars inscrivent dans les 3 variables que je veux ?

          Private Sub cmbChoix_Change()
          If cmbChoix.ListIndex = 1 Then
          CHATBOXR = HScroll1.Value
          CHATBOXG = HScroll2.Value
          CHATBOXB = HScroll3.Value
          End If
          
          RefreshRes
          
          End Sub

          Je n'ai fait que la première condition (celle du [CHATBOX]) pour tester mais cela ne marche par.

          Merci beaucoup de votre correction de mon script à venir.
          Fenril'Skanenruf, http://www.groupe-midgard.com/