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

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

Votre réponse

11 réponses

Meilleure réponse
cs_nabulio54 13 Messages postés samedi 5 août 2006Date d'inscription 6 décembre 2008 Dernière intervention - 10 août 2007 à 16:48
3
Merci
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

Merci cs_nabulio54 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de cs_nabulio54
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 10 août 2007 à 14:01
0
Merci
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-
Commenter la réponse de cs_Bidou
cs_nabulio54 13 Messages postés samedi 5 août 2006Date d'inscription 6 décembre 2008 Dernière intervention - 10 août 2007 à 14:12
0
Merci
Je suis un peu débutant...aussi ton explication ne me donne pas la solution!!
help me!
Commenter la réponse de cs_nabulio54
Kristof_Koder 920 Messages postés vendredi 3 août 2007Date d'inscription 27 octobre 2008 Dernière intervention - 10 août 2007 à 15:26
0
Merci
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
Commenter la réponse de Kristof_Koder
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 10 août 2007 à 16:02
0
Merci
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
Commenter la réponse de Charles Racaud
Kristof_Koder 920 Messages postés vendredi 3 août 2007Date d'inscription 27 octobre 2008 Dernière intervention - 10 août 2007 à 16:18
0
Merci
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
Commenter la réponse de Kristof_Koder
Kristof_Koder 920 Messages postés vendredi 3 août 2007Date d'inscription 27 octobre 2008 Dernière intervention - 10 août 2007 à 16:19
0
Merci
Je voulait dire 15 ANS de prog en VB 4/5/6, bien sur !!
Commenter la réponse de Kristof_Koder
NHenry 14278 Messages postés vendredi 14 mars 2003Date d'inscription 21 octobre 2018 Dernière intervention - 10 août 2007 à 16:38
0
Merci
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
Commenter la réponse de NHenry
Kristof_Koder 920 Messages postés vendredi 3 août 2007Date d'inscription 27 octobre 2008 Dernière intervention - 10 août 2007 à 16:55
0
Merci
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
Commenter la réponse de Kristof_Koder
cs_nabulio54 13 Messages postés samedi 5 août 2006Date d'inscription 6 décembre 2008 Dernière intervention - 10 août 2007 à 17:05
0
Merci
Daccord!
La prochaine fois, je relirai mon code avant de l'envoyer!
 Merci pour tes conseils
Commenter la réponse de cs_nabulio54
cs_nabulio54 13 Messages postés samedi 5 août 2006Date d'inscription 6 décembre 2008 Dernière intervention - 10 août 2007 à 17:13
0
Merci
Daccord,
la prochaine fois je relierais plus attentivement mon code avant de l'envoyer.
merci pour tes conseils
Commenter la réponse de cs_nabulio54

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.