Boucle for sur un composant possible ?

Résolu
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010
- 13 juin 2009 à 11:20
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
- 14 juin 2009 à 23:28
Bonjour,

je souhaiterais savoir si il était possible de mettre la valeur d'une variable sur un composant afin de l'incrémenter comme par exemple :

- composant utilisé : imgToto (nom du composant Image) et je pars du principe que j'ai 10 images (imgToto1 ; imgToto2 ... imgToto10)

dim i as integer
for i=1 to 10
   imgToto(i).width=36
next i

Après un essai Visual Basic m'informe Fonction incorrecte (car la parenthèse de imgToto(i) indique évidemment qu'il s'agit d'une fonctionne et non d'une variable. Y aurait il une solution à mon problème ?

13 réponses

cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
13 juin 2009 à 13:00
Oups ...
For i = 0 to 9 '10-1
  Set Me.imgToto(i).Picture = Me.imgIco.ListImages(i)
Next i
3
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
13 juin 2009 à 12:11
On dit une fonction, pas une foncionne !
En fait tu dois mettre la propriété Index à 0 et à partir de ce moment, tu peux les adresser comme tu voulais le faire.
Tu peux aussi en placer un seul sur le form avec un index à 0 et charger les autres dynamiquement en modifiant leur position ainsi que leur taille sur le form ...
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 12:17
Erreur de frappe pour le "fonctionne"

Merci pour ta réponse, je fais une tentative et reviens valider ta réponse si c'est bon.
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 12:41
Après avoir modifié mes index à 0 dans les propriétés de mes imgTotox, j'ai toujours un message me disant qu'il s'agit d'une "fonction" : 

- composant utilisé : imgToto (nom du composant Image) et je pars du principe que j'ai 10 images (imgToto1 ; imgToto2 .. imgToto10),
- composant utilisé : imgIco (nom du composant ImageList) qui comprend 10 images avec des index de 1 à 10.

sub affiche_img ()
   Dim i as Integer
   For i = 1 To 10
      imgToto(i).Picture = imgIco.ListImages(i).Picture
   Next i
end sub

J'ai tenté de passer une variable en argument de ma fonction mais j'ai le même message disant que imgToto est une fonction non définie.
La manipulation est-elle différente du fait que je charge une image à partir du composant ImageList ?
0

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

Posez votre question
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
13 juin 2009 à 12:59
L'index doit commencer à 0 :
For i = 0 to 9 '10-1

  Set Me.imgToto(i).Picture = Me.ImageList1.ListImages(i)

Next i
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 13:44
J'ai encore le même message (j'ai créé un nouveau projet pour tester) me disant que imgToto(i) est une fontion non définie.

j'ai utilisé dans mon nouveau projet :
-composants : 
   * Microsoft Windows Common Control 6 pour avoir mon composant ImageList
   * ImageList (nommé imgIco au quel j'ai ajouté deux images avec Index= 1 et Index=2 dans les propriétés)
   * Image (nommé imgToto1 et un autre nommé imgToto2 avec tous les deux la propriété Index à 0)
et j'ai ensuite mis dans mon code :

Private Sub Form_Load()
    Dim i As Integer
    For i = 0 To 9 '10-1
      Set imgToto(i).Picture = imgIco.ListImages(i)
    Next i
End Sub

j'ai également tenté en mettant le code suivant :

Private Sub Form_Load()
    Dim i As Integer
    For i = 0 To 9 '10-1
      Set imgToto(i).Picture = imgIco.ListImages(i).Picture
    Next i
End Sub

et j'ai le même résultat négatif.
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 13:51
j'ai oublié de préciser : si je mets le "Me." devant les imgToto(i) j'ai un message "Methode ou membre de données introuvable"
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 14:34
Ca y est j'ai enfin trouvé ! Afin de palier aux différents problèmes j'ai mis ceci dans le code :

Private Sub Form_Load()
    Dim i As Integer
    For i = 0 To 9 '10-1
      Set imgToto(i).Picture = imgIco.ListImages(i+1).Picture
    Next i
End Sub

Merci pour ton aide ghuysmans99 !
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 14:43
Maintenant me reste à mettre en application ton idée : "Tu peux aussi en placer un seul sur le form avec un index à 0 et charger les autres dynamiquement en modifiant leur position ainsi que leur taille sur le form" !

uhhh...
Existe-t-il une instruction pour créer un "composant" ?
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

13 juin 2009 à 17:10
Solution à ma réponse précédente au cas ou ça peut servir à quelqu'un :

Load Me.imgToto(i)

[ SUJET CLOS]
0
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
14 juin 2009 à 10:26
Je sais pourquoi je m'étais trompé : je partais du principe que l'index commençait à 0 (ce qui est logique : on commence normalement toujours à 0).
0
Euxerus
Messages postés
21
Date d'inscription
jeudi 30 octobre 2003
Statut
Membre
Dernière intervention
20 avril 2010

14 juin 2009 à 19:51
Mais merci pour tes instructions qui m'ont bien guidée !
Je vais maintenant me pencher sur l'attribution d'une fonction lorsque l'on clique sur un des composants générés dynamiquement...
A bientôt
0
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
16
14 juin 2009 à 23:28
C'est dans le code du bouton : le paramètre Index contient l'index du bouton où on a cliqué.
0