propriété Index des controles de formulaire

Résolu
cs_nabulio54 Messages postés 13 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 6 décembre 2008 - 10 août 2007 à 13:47
cs_nabulio54 Messages postés 13 Date d'inscription samedi 5 août 2006 Statut Membre Derniè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

11 réponses

cs_nabulio54 Messages postés 13 Date d'inscription samedi 5 août 2006 Statut Membre Derniè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


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

<hr />
-Blog-
0
cs_nabulio54 Messages postés 13 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 6 décembre 2008
10 août 2007 à 14:12
Je suis un peu débutant...aussi ton explication ne me donne pas la solution!!
help me!
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
10 août 2007 à 16:02
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
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
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
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
10 août 2007 à 16:19
Je voulait dire 15 ANS de prog en VB 4/5/6, bien sur !!
0
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
10 août 2007 à 16:38
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
0
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
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

Kristof_Koder
0
cs_nabulio54 Messages postés 13 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 6 décembre 2008
10 août 2007 à 17:05
Daccord!
La prochaine fois, je relirai mon code avant de l'envoyer!
 Merci pour tes conseils
0
cs_nabulio54 Messages postés 13 Date d'inscription samedi 5 août 2006 Statut Membre Dernière intervention 6 décembre 2008
10 août 2007 à 17:13
Daccord,
la prochaine fois je relierais plus attentivement mon code avant de l'envoyer.
merci pour tes conseils
0
Rejoignez-nous