sbouquet
Messages postés70Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention15 mars 2004
-
26 janv. 2004 à 16:43
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
26 janv. 2004 à 19:57
Hello everybody
Voici mon pb. J'ai plusieurs rangées de picturebox dont la rangée 1 constitue la rangée des picture1(index), la rangée 2 celle des picture2(index) .... Mon pb est que j'aimerais recupérer l'index de la derniere picturebox qui posséde une image et savoir de quelle picturebox il s'agit. Je pensais avoir reussi (en ce qui concerne la recuperation de l'index) en utilisant cette boucle :
For Each ctrl In Controls
If ctrl.Tag <> "a" Then
If ctrl.Visible = True Then
j = j + 1
If ctrl.Picture = 0 Then
i = ctrl.Index
Exit For
End If
End If
End If
Next
ou i est le numéro de l'index de la derniere picture et j le numéro de la rangée, mais il se trouve que ca ne marche que pour 2 rangées, si j'en ajoute une troisieme ou plus cela ne marche plus. Mon but etant qu'une fois que je connais la derniere picturebox qui posséde une image je pourrais attribuer une image aux picturebox suivantes.
Je ne c pas si j'ai été assez clair mais je vous serais reconnaissant de m'aider sur ce sujet
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 26 janv. 2004 à 19:57
Salut
La méthode "For Each" ne garantit pas qu'elle les découvre dans l'ordre.
Il va te falloir faire autant de boucle que de Picture1, 2 ... et tester, avec une boucle chaque index, en commençant par la fin, ce sera plus rapide.
Si tu ne connais pas le nombre d'images, UBound(Picture1) te le donnera.
Tu peux aussi garder ton code et repérer le nom de l'objet pour savoir s'il s'appelle Picture1 ou Picture4.
Proposition de code :
Dim Ctrl As PictureBox, x as Integer
No = 4 ' le maxi (Picture4)
NoTrouvé = -1 ' Le No du Picture
IndexTrouvé = -1 ' Le No d'index de ce PictureX
For Each Ctrl in Me
If Ctrl.Name = "Picture" & Cstr(No) Then
For x = UBound(Ctrl) to 0 Step -1
If Not Ctrl.Picture Is Nothing Then
NoTrouvé = No
IndexTrouvé = x
Exit For
Next x
If NoTrouvé <> -1 Then Exit For
No = No - 1
If No < 1 Then Exit For
Next
En sortie :
NoTrouvé sera 4 pour Picture4 ou 3 pour Picture3
IndexTrouvé sera l'index de la dernière image