cs_nabulio54
Messages postés13Date d'inscriptionsamedi 5 août 2006StatutMembreDernière intervention 6 décembre 2008
-
10 août 2007 à 13:47
cs_nabulio54
Messages postés13Date d'inscriptionsamedi 5 août 2006StatutMembreDernière intervention 6 décembre 2008
-
10 août 2007 à 17:13
problème:
En VB6, dans un timer, je pouvais modifier les propriété d'un contrôle appartenant à un groupe de contrôle grace à la propriété index(Exemple:Modification du caption du bouton1)
Je ne parviens pas à refaire la même chose en VB 2005.
Bref, si vous pouviez m'aider!!!
Exemple pour un shape en VB6.Faire la même chose en VB 2005 Express
Private Sub Timer1_Timer()
mot_sortie = HScroll1.Value
For i = 15 To 0 Step -1
If (mot_sortie / (2 ^ i) >= 1) Then
Shape1(i).FillColor = &HFF&
mot_sortie = mot_sortie - (2 ^ (i))
Else
Shape1(i).FillColor = &HFFFFFF
End If
Next i
'Text2.Text = CStr(mot_sortie)
End Sub
cs_nabulio54
Messages postés13Date d'inscriptionsamedi 5 août 2006StatutMembreDernière intervention 6 décembre 2008 10 août 2007 à 16:48
OK, dans mon application, ça marche avec le code ci-dessous(obligé de mettre Dim Coll As New ArrayList). Bref on est obligé de remplir un par un le tableau avec les contrôle!
c'est beaucoup moin élégant et facile qu'en VB6!
Merçi beaucoup!!
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim n As Int16
Dim octet As Integer
Dim Coll As New ArrayList
CType(Coll(n), CheckBox).Checked = True
For n = 0 To 7
If (octet / (2 ^ n) >= 1) Then
CType(Coll(n), CheckBox).Checked = True
Else
CType(Coll(n), CheckBox).Checked = False
End If
octet = octet - (2 ^ n)
Next n
End Sub
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 10 août 2007 à 14:01
Le VB6 c'est très très loin pour moi , mais je pense que cette notion de groupe n'existe plus dans VB2005.
Il faut les mettre dans une collection (de boutons) et itérer comme tu le fais déjà maintenant à travers tes boutons.
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 10 août 2007 à 15:26
peut-etre un truc du genre :
Dcl de la collection : Dim Coll as ArrayList
Ajout d'un controle à la collection : Coll.Add(Textbox1)
Accès au controle N°i dans la collection : CType(Coll(i),Textbox).Text = "Ctrl " & i
Kristof_Koder
Vous n’avez pas trouvé la réponse que vous recherchez ?
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 10 août 2007 à 16:18
Du même genre mais bien meilleur,c ar cela évitera le CType() je pense non ?
(suis débutant en VB.NET 2005 : 4 heures de prog à mon actif dans ce langage pour le moment ! Contre 15 en VB 4/5/6 !!!!)
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 10 août 2007 à 16:55
M'est avis que ta collection ne devrait pas être local à ta Sub Timer1_Tick(), car sinon, cela veut dire qu'à chaque tour de timer, tu instancies un nouvel arraylist, et tu y ajoutes tes checkboxes pour ensuite détruire ton instance d'arraylist!! Pas très optimal ca non ?
Tu devrais déclarer ton ArrayList au niveau d'un module, et faire une Sub InitArrayList() qui va enregistrer tes checkboxes dedans.
Tu devra faire appel à cette sub d'initialisation une et une seule fois, dans le form_load par exemple.
Ensuite, dans ta sub Timer1_Tick(), tu ne conserves que ta boucle For