argentin7
Messages postés125Date d'inscriptionvendredi 10 août 2007StatutMembreDernière intervention14 juillet 2008
-
25 oct. 2007 à 20:43
argentin7
Messages postés125Date d'inscriptionvendredi 10 août 2007StatutMembreDernière intervention14 juillet 2008
-
26 oct. 2007 à 13:12
bonjour tout le monde
j'ai un groupe de label (lbl(0),,,,lbl(N))
je veux savoir si je peux le traiter comme tableau parceque j ai essayer d'utliser redim preserve mais ca n'a pas marché
et merci
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 25 oct. 2007 à 21:37
Malgrés les apparences , un groupe de controle n'est pas un tableau, il est plus à considéré comme une collection.
Théoriquement un Redim ne devrais pas fonctionner. Une collection se traite avec une méthode Add pour ajouter un élément et remove pour en supprimer un. Dans un groupe de controle, les méthodes sont implicites et automatiquement appelées à partir du moment ou un controle portant le nom du groupe est créer ou détruit.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 25 oct. 2007 à 23:08
Bonsoir,
Bien évidemment non !
l'index de l'un n'est certes pas ainsi devenu celui de l'autre !Ce que tu as écrit établit simplement une égalité des deux propriétés par défaut (caption) de l'un et de l'autre...
Mais tu aurais pu le voir toi-même !
Petit test avec un petit projet composé d'un label label1(o) et d'un bouton de commande Command1, donc ...
Private Sub Command1_Click()
Load Label1(1)
Label1(1).Move Label1(0).Left + Label1(0).Width
Label1(1).Visible = True
Label1(0).Caption = "coucou"
Label1(1) = Label1(0)
MsgBox Label1(1).Index
End Sub
vois ce que tu as à l'écran et ce qu'affiche ton message... (tu aurais fait celà et tu aurais eu ta réponse tout seul, comme un grand).
argentin7
Messages postés125Date d'inscriptionvendredi 10 août 2007StatutMembreDernière intervention14 juillet 2008 25 oct. 2007 à 22:46
merci pour vos reponses
effectivement Kristof ,dans mon code je cree des labels dynamiquement
j'ai trouver cette procedure sur le forum pour faire un delete d'un element du tableau son laisser un "trou",mais lorsque je l'ai appliqué sur mon groupe de controle ca ne fonctionne pas
Public Sub Delete(ByRef tableau As variant, element As variant)
Dim i As Integer
For i = element To UBound(tableau) - 1
tableau(i) = tableau(i + 1)
Next
ReDim Preserve tableau(UBound(tableau) - 1)
End Sub
argentin7
Messages postés125Date d'inscriptionvendredi 10 août 2007StatutMembreDernière intervention14 juillet 2008 25 oct. 2007 à 22:50
si vous me permettez
lorsque je met lbl(i+1)=lbl(i), est ce que cela veut dire aussi que l'index de lbl(i+1) est devenu egal a l'index de lbl(i) soit i
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 25 oct. 2007 à 23:07
Lis bien ce qu'a écrit Casy !!
TU NE DOIS PAS CONSIDERER TON GROUPE DE CONROLE COMME UN TABLEAU MAIS COMME UNE COLLECTION !!
Pour supprimer un élément de ton groupe :
Unload lbl(Index)
ou Index représente l'index du label à supprimer.
Pour ce qui serait "de ne pas laisser un trou", ton groupe étant une collection et non un tableau tu t'e fout un peu !!
Tu pouras toujorus faire un For Each sur ton groupe pour passer tous tes labels en revue :
Dim Item As Label
For Each Item In Lbl
MsgBox Item.Caption & vbCrLf & "Index=" & Item.Index
Next
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 25 oct. 2007 à 23:13
Salut,
si tu as 8 éléments et que tu supprimes le 4ième,
tu pars de l' element +1 ==> 5
For i= 5 to 8
lbl(i).Index = i -1
Next
Ainsi :
le 5 redevient 4
le 6 ..............5
le 7 ------- 6
le 8 ------- 7
comme ça tu n' auras pas de " trou" tout en évitant d' avoir deux éléments du même indice.
argentin7
Messages postés125Date d'inscriptionvendredi 10 août 2007StatutMembreDernière intervention14 juillet 2008 26 oct. 2007 à 00:06
j'ai oublier de vous dire que lorsque je supprime un element de mon groupe de controle lbl(i
)
je veux que le reste change d'index c'est a dire que tous les element ayant un index superieur a i</gras>i index(apres suppression de l'element i)=index(avant suppression de l'element i)-1
Kristof_Koder
Messages postés918Date d'inscriptionvendredi 3 août 2007StatutMembreDernière intervention27 octobre 200810 26 oct. 2007 à 00:39
mais tu ne peux pas modifier l'index d'un controle ! C'est une propriété en lecture seule. Tu l'as écrit toi-même à l'attention de Chaibat !
i va falloir que tu fasses avec les trou dans les Index. Pourquoi cela te pose-t-il un souci s'il y a des trous dan sl'ordre des index ?
argentin7
Messages postés125Date d'inscriptionvendredi 10 août 2007StatutMembreDernière intervention14 juillet 2008 26 oct. 2007 à 07:51
a Kristof
je voulais faire des boucles avec for next
mais je pense que for each va regler le probleme
s'il y a un autre moyen je vous serai tres reconnaissant
Q: Pourquoi cela te pose-t-il un souci s'il y a des trous dans l'ordre des index ?
R: qestion d'organisation (masi oui pourquoi cela me pose un souci !!!!!!!!)
merci Kristof