Checkbox alternance

elisastas Messages postés 8 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 9 mars 2008 - 15 juin 2006 à 16:10
elisastas Messages postés 8 Date d'inscription mardi 13 décembre 2005 Statut Membre Derniè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????








 






 






 




merci à vous pour tout les bons conseils








 






 




bien à vous jérome Stas

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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
0
elisastas Messages postés 8 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 9 mars 2008
15 juin 2006 à 22:17
merci je tests cela demain matin et je te tiens au courant merci
0
Rejoignez-nous