VB6 - Problème condition

Fenril'Skanenruf -  
 Fenril' -
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. amigo
     
    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.
    0
    1. Fenril'Skanenruf
       
      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/
      0
  2. amigo
     
    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+.
    0
    1. Fenril'Skanenruf
       
      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.
      0
  3. amigo
     
    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
    
    0
  4. Fenril'
     
    Merci beaucoup ça donne mieux, je le rajoute à mon programme. Merci beaucoup Amigo.
    Et Adios Amigo ^^
    0