Problème de compatibilité...

cs_bumbo Messages postés 26 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 10 février 2010 - 21 juil. 2005 à 17:42
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 21 juil. 2005 à 19:14
Bonjour, dans mon prog, j'ai une erreur, je comprend ce que c'est mais je ne connais pas le solution. Je m'explique:

au départ dans form1 j'ai une picturebox appelée picturebox1(0)

je souhaite creer dynamiquement d'autres picturebox, pour cela j'utilise le prog si dessous:

For tmp = 1 To 21
nv = picturebox1.UBound + 1
Load picturebox1(nv)
picturebox1(nv).Left = picturebox1(nv - 1).Left + picturebox1(nv - 1).Width
picturebox1(nv).Top = picturebox1(nv - 1).Top
picturebox1(nv).Visible = True
Next

Jusque la, tout marche bien....
Maintenant, je creer une 2eme picturebox
j'ai donc maintenant deux picturebox dans form1:
picturebox1(0) et picturebox2(0) et je veux les dupliquer tous les deux, j'ai donc fait le programme suivant:

For tmp 1 To tmp 2
test = "picturebox" & tmp
'test est donc égal a picturebox1 puis picturebox2
For tmp2 = 1 To 21
nv = test.UBound + 1
Load test(nv)
test(nv).Left = test(nv - 1).Left + test(nv - 1).Width
test(nv).Top = test(nv - 1).Top
test(nv).Visible = True
Next
Next

le problème est donc que la variable 'test' ne correspond pas a picturebox1 ou picturebox2 et donc j'ai une erreur...

Si quelqu'un a une idée, je suis prenneur....

merci beaucoup

2 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 juil. 2005 à 19:14
Salut,

Ca ne peut pas marcher comme ça. A part le 'test' de
test = "picturebox" & tmp
remplace tous les 'test' par Controls(test)

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 juil. 2005 à 19:14
La ligne nv = Test.UBound + 1 n'a aucun sens pour VB !!!

Test est de type String ... Donc n'a aucune propriété nommé UBound !!

Mais de toute façon tu n'a pas besoin de cela. Tu n'as pas besoin de
passer par une variable intermédiaire pour calculer l'index de ta
nouvelle Picturebox ! Tu l'a déjà avec ta variable nommée tmp ...

Voila le code que je te propose ...



For tmp = 1 To 21

Load picturebox1(tmp)

picturebox1(tmp).Left = picturebox1(tmp - 1).Left + picturebox1(tmp - 1).Width

picturebox1(tmp).Top = picturebox1(tmp - 1).Top

picturebox1(tmp).Visible = True

Next


For tmp = 1 To 21


Load picturebox2(tmp)


picturebox2(tmp).Left = picturebox2(tmp - 1).Left + picturebox2(tmp - 1).Width


picturebox2(tmp).Top = picturebox2(tmp - 1).Top


picturebox2(tmp).Visible = True


Next



Comme cela double le code, tu vas me dire ... C'est nul !!! Alors voila une idée ...



Sub CreatePBox(PBox As PictureBox)

For tmp = 1 To 21



Load PBox(tmp)



PBox(tmp).Left = PBox(tmp - 1).Left + PBox(tmp - 1).Width



PBox(tmp).Top = PBox(tmp - 1).Top



PBox(tmp).Visible = True



Next

End Sub



Et puis tu appelles deux fois cette procédure comme ceci ...



CreatePBox PictureBox1

CreatePBox PictureBox2


Et ca devrait gazer !



Christophe R
0
Rejoignez-nous