PROTEUS91
Messages postés156Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 décembre 2010
-
18 oct. 2008 à 15:00
PROTEUS91
Messages postés156Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 décembre 2010
-
18 oct. 2008 à 19:39
Bonjour,
Je pose cette question, car je ne vois pas de solution à mon problème. Peut être que l'un d'entre vous pourra m'aider.
Voilà, j'ai une form dans laquelle j'ai plusieurs objet, des boutons, des ListBox, des TextBox, des labels etc...
Ce que je veux faire c'est lister le "Caption" pour tous ces objets donc pour cela je fait :
For Each ObjectCurrency In Me.Controls
List1.AddItem ObjectCurrency.Name
List2.AddItem ObjectCurrency.Caption
Next
(Au préallable j'ai testé si l'objet avait bien la propriété de "Caption")
Ca marche niquel mais le problème c'est que quand il rencontre les labels il ne m'en liste qu'un. Les labels sont crée sur ma form avec un Index exemple :
Label2(0)
Label2(1)
Label2(2)
Label2(3)
Je ne sais pas comment faire pour qu'il me liste les captions de tous ces index, je ne sais vraiment pas comment faire si vous avez une idée...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 18 oct. 2008 à 17:57
Essaye ceci et tu vas comprendre :
For Each objectcurrency In Me.Controls
On Error Resume Next
List1.AddItem objectcurrency.Name & "(" & objectcurrency.Index & ")"
Next
J'ai mis ici un on error resume next pour ne pas avoir à m'occuper de tes autres contrôles (qui ne figureront pas dans ta liste, donc...)
A toi de gérer comme tu l'entends (par exemple en utilisant TypeOf, ou même le nom des contrôles indexés dans une If ...)
Tu devrais t'en sortir sans problème, pour peu que tu y réfléchisses un peu ...
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 18 oct. 2008 à 18:24
Alles, va ...
C'est Samedi, alors ...
Voilà une manière ... essaye :
Private Sub Command1_Click()
Dim objectcurrency As Control
For Each objectcurrency In Me.Controls
If voyons_si_groupe(objectcurrency) Then
List1.AddItem objectcurrency.Name & "(" & objectcurrency.Index & ")"
Else
List1.AddItem objectcurrency.Name
End If
Next
End Sub
Private Function voyons_si_groupe(ctrl As Control) As Boolean
voyons_si_group = False
On Error GoTo 10
If ctrl.Index >= 0 Then
voyons_si_groupe = True
End If
10:
End Function
PROTEUS91
Messages postés156Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 décembre 2010 18 oct. 2008 à 15:43
Hello merci d'avoir repondu aussi vite.
For Each ObjectCurrency In Me.Controls
List1.AddItem ObjectCurrency.Name 'La il appel un item pas un groupe
List2.AddItem ObjectCurrency.Caption 'Idem ici
Next
Mon probleme c'est que je ne sais pas comment gerer les groupes, si je fais ca :
for I = 0 to ObjectCurrency.ubound 'J'ai deja une erreur ici ou il me dit que l'objet ne gere pas cette propriété
List1.AddItem ObjectCurrency(i).Name 'Et un autre erreur ici.
List2.AddItem ObjectCurrency(i).Caption
Next i
PROTEUS
Vous n’avez pas trouvé la réponse que vous recherchez ?
PROTEUS91
Messages postés156Date d'inscriptionmardi 4 novembre 2003StatutMembreDernière intervention28 décembre 2010 18 oct. 2008 à 16:19
En fait il y a meme un deuxieme probleme qui peut etre est issu du premier. En fait une fois que j'ai listé les objets dans la listbox, J'enregistre le contenu de la listbox dans un fichier, et en fait le truc c'est que dans une autre procedure pour des raisons X je recharge ce fichier dans une listbox et il boucle la liste pour modifier le caption de tous les noms d'objet enregistrer dans la listebox.
Probleme c'est que meme si j'arrive a enregistrer dans la Listbox le nom Label2(0) je n'arriverai jamais a le recharger avec cette ligne de code.
Pour les objets sans index ca marche sans probleme mais quand j'aurai resolu le probleme de l'acquisition des noms d'index (voir le probleme ci dessus) j'aurai encore le probleme de gerer les index pour la modification du caption....
Je sias pas si je suis clair en tout cas je l'espere.
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 18 oct. 2008 à 16:59
bonjour
la solution serait de ne pas avoir de labels indexés
si tu ne peux pas parce que tu utilise les index ailleurs dans ton code il faut alors faire une boucle juste sur tes labels pour pouvoir récupérer le .caption de chaque index
[reglement.aspx ]si c'est la solution, penser : REPONSE ACCEPTEE
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 18 oct. 2008 à 17:51
Je répète donc :
1) le code (ton tout premier) est bon tel qu'il est
2) le nom d'un contrôle faisant partie d'un groupe de contrôles indexés est le même pour chaque contrôle du groupe
Ainsi Label1(2) a pour nom Label1, tout comme Label1(1) ou label1(0) ...
0, 1 et 2 sont des indices dans le groupe et ne font pas partie du nom du contrôle...
Merci vraiment pour l'aide que tu m'as apportée je pensais être pas loin de la solution sans savoir que ca pouvait etre aussi simple. Je te remerci encore de m'avoir aidé aussi rapidement.