propriété Index des controles de formulaire [Résolu]

Signaler
Messages postés
13
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
6 décembre 2008
-
Messages postés
13
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
6 décembre 2008
-
 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

11 réponses

Messages postés
13
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
6 décembre 2008

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


        octet = TrackBar1.Value
        TextBox2.Text = CStr(octet)


        Coll.Add(CheckBox1)
        Coll.Add(CheckBox2)
        Coll.Add(CheckBox3)
        Coll.Add(CheckBox4)
        Coll.Add(CheckBox5)
        Coll.Add(CheckBox6)
        Coll.Add(CheckBox7)
        Coll.Add(CheckBox8)


        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
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
55
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.

<hr />
-Blog-
Messages postés
13
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
6 décembre 2008

Je suis un peu débutant...aussi ton explication ne me donne pas la solution!!
help me!
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
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
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Tu même genre que Kristof :

Dim Buttons() As System.Windows.Forms.Button
' ...
Buttons = New System.Windows.Forms.Button() {Button1, Button2, ...}






__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
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és
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Je voulait dire 15 ANS de prog en VB 4/5/6, bien sur !!
Messages postés
14800
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
19 juin 2021
156
Bonjour

En .NET2 une collection de type ArrayList de boutons : list(of System.Windows.Forms.Button)

Balèse la personne qui a pensé au pansement à penser (ou à panser, pensée).
VB (6, .NET1&2), C++, C#.Net1
Mon site
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
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

Kristof_Koder
Messages postés
13
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
6 décembre 2008

Daccord!
La prochaine fois, je relirai mon code avant de l'envoyer!
 Merci pour tes conseils
Messages postés
13
Date d'inscription
samedi 5 août 2006
Statut
Membre
Dernière intervention
6 décembre 2008

Daccord,
la prochaine fois je relierais plus attentivement mon code avant de l'envoyer.
merci pour tes conseils