elisastas
Messages postés8Date d'inscriptionmardi 13 décembre 2005StatutMembreDernière intervention 9 mars 2008
-
15 juin 2006 à 16:10
elisastas
Messages postés8Date d'inscriptionmardi 13 décembre 2005StatutMembreDernière intervention 9 mars 2008
-
15 juin 2006 à 22:17
Je programme en vbscript sous le logiciel d'un automate programmable TBOX
mais j'ai un petit problème
alternance de deux checkbox qui assignent dans une variable analogique STO une valeur pour le premier checkbox egale à 1 et l'autre égale à 2
voici ce que j'ai déja écrit
'Général définition
Dim CHOIX
CHOIX1 = false
la déclaration de cette variable est nécessaire pour rafraichir l'état d'une variable écrite dans mon automate et si je veux lors d'un redémarage de la supervision récupérer mon objet dans l'état ou je l'ai quitté
"déclaration labeldynamique invisible : labelDynamique1 définit come un registre interne analogique
Sub LabelDynamique1_EventOnValueChanged()
Dim This : Set This = LabelDynamique1
If not CHOIX1 Then
CheckButton2.Value=this.value
CheckButton1.Value=this.value
End If
End Sub
"premier checkbox"
Sub CheckButton1_EventChange()
Dim This : Set This = CheckButton1
if CHOIX1 then
labelDynamique1.value=1
CheckButton2.Value=0
end if
end sub
"deuxième checkbox"
Sub CheckButton2_EventChange()
Dim This : Set This = CheckButton2
if CHOIX1 then
labelDynamique1.value=2
CheckButton1.Value=0
end if
end sub
comme cela cela fonctionne mais la sélection " le petit "V" dans le checkbox n'apparait qu'après un second click mais létat de ma variable lui change au premier click????
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 juin 2006 à 18:40
Salut
Ton langage ressemble à du VB, mais n'est pas exécuté par VB, donc les résultats (ou bug) sont propres à ton logiciel de programmation.
En VB, cela fonctionnerait.
Essaye de faire un CheckButton1.Refresh après un changement de valeur, pour voir ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 juin 2006 à 18:54
... pendant que j'y pense.
En VB6, il y a une précaution à prendre quand on manipule la valeur des CheckBox :
L'évènement _Click qu'on utiliserait en VB semble s'appeler _EventChange chez toi.
Il se déclenche lors l'un Click (logique), mais aussi si ton programme change la valeur du CheckBox.
Donc, je pense que la ligne CheckButton1.Value=0 provoque l'exécution de Sub CheckButton1_EventChange() donc, il remodifie la valeur de l'autre ... Comme CHOIX ne change jamais d'état, ça doit même reboucler sur lui-même.
Pour éviter ça, il faut :
- Dimensionner une variable bolléenne au niveau Forme (pour que toutes les procédures puissent la voir) :
Private bChangement As Boolean
- Mettre à True cette variable avant de faire un changement de valeur d'une des CheckBox
- Sauter les instructions à l'intérieur de tes Sub _EventChange lorsque cette variable est à True
- Remettre la variable à False avant de ressortir de ta Sub
Ce qui donnerait un truc du genre :
"premier checkbox"
Sub CheckButton1_EventChange()
Dim This : Set This = CheckButton1
If bChangement Then Exit Sub
if CHOIX1 then
labelDynamique1.value=1
bChangement = True
CheckButton2.Value=0
bChangement = False
end if
end sub
"deuxième checkbox"
Sub CheckButton2_EventChange()
Dim This : Set This = CheckButton2
If bChangement Then Exit Sub
if CHOIX1 then
labelDynamique1.value=2
bChangement = True
CheckButton1.Value=0
bChangement = False
end if
end sub
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Champion du monde de boule de cristal - 2005 Le savoir est la seule matière qui s'accro