cs_antho2005
Messages postés150Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention 1 mai 2012
-
25 févr. 2007 à 22:09
cs_antho2005
Messages postés150Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention 1 mai 2012
-
26 févr. 2007 à 12:21
Bonjour,
mon probleme est le suivant : sur ma form je crée et suprrime des composants de même nom avec des index differents en utilisant Load. Le truc c'est que si je prend le dernier plus un (c'est à dire le nombre total, car ça commence par zéro) au bout d'un moment ba l'index y sera trop grand (maximum 32 767).
Donc je prend (enfin j'essaye) de prendre le premier disponible mais j'y arrive pas ...
Voici mon code :
Dim Ctrl As Control
nbr = 0
ok = 0
Do While ok = 0
toto = 0
For Each Ctrl In Form1.Controls
If Ctrl.Name = "etoile" Then
If Ctrl.Tag = nbr Then
toto = toto + 1
Else
toto = toto + 0
End If
cs_antho2005
Messages postés150Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention 1 mai 20123 26 févr. 2007 à 12:21
Salut et merci pour la rapidité de ta réponse,
j'ai relu le code et mis des commentaire puis j'ai décidé de tout changer.Ca marche bien que j'ai mis longtemps à me rendre compte que le chiffre(par exemple 1) du i, qui est un nombre, est different different de celui du tag de l'étoile qui est du texte.
Je met le code complet pour ceux qui le veulent (bien que pour l'instant il n'y a que des points blancs qui descendent la form). Il vous faut une feuille Form1, un control shape nommé etoile en invisible avec un index de zéro et deux timer nommés Timer1 et Timer2 ayant tout deux des intervals de 10.
Code :
Private Sub Timer1_Timer()
Randomize
'prend un nombre au hasard entre 0 et la largeur de la form
a = CInt(Int(Form1.Width * Rnd()))
'prend en nombre au hasard entre 1 et 50
b = CInt(Int((49 * Rnd()) + 1))
'initialisation des variables
Dim Ctrl As Control
ok = 0
nbr = 0
For i = 1 To etoile.Count
combien = 0
'pour chaque control dans la form
For Each Ctrl In Form1.Controls
'Si c'est un control "etoile"
If Ctrl.Name = "etoile" Then
'Si son Tag est le nombre i
If Ctrl.Tag = CStr(i) Then
'alors c'est qu'y en a 1
combien = 1
'ça nous interesse pas, on peut sortir
Exit For
End If
End If
Next
'si il en a pas trouvé
If combien = 0 Then
'c'est que c'est le premier index dispo(à part zéro) c'est donc celui-la qu'on va utiliser
nbr = i
'on sort de la boucle car on a trouvé ce qu'on cherchait
Exit For
End If