Pciturebox et index

sbouquet Messages postés 70 Date d'inscription mardi 4 mars 2003 Statut Membre Dernière intervention 15 mars 2004 - 26 janv. 2004 à 16:43
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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

Merci

1 réponse

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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

Vala
Jack
0
Rejoignez-nous