VB6 - Problème condition

Fermé
Fenril'Skanenruf - 3 avril 2008 à 21:11
 Fenril' - 17 avril 2008 à 18:38
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.
A voir également:

4 réponses

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
Fenril'Skanenruf
4 avril 2008 à 17:55
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
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
Fenril'Skanenruf
4 avril 2008 à 18:46
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
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
Merci beaucoup ça donne mieux, je le rajoute à mon programme. Merci beaucoup Amigo.
Et Adios Amigo ^^
0