cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 26 févr. 2003 à 10:25
Salut aanabil
Oui, c'est possible.
Il suffit pour celà de prévoir, à la création, les contrôles que tu veux créer dynamiquement.
Par exemple, tu veux ajouter un Label :
- En mode création, crée un Label original auquel tu mets les propriétés suivantes :
Index = 0 ' Indexation (obligatoire)
Visible = False ' pour ne pas voir cet original
- Ensuite, en RunTime, pour ajouter un Label, tu fais :
Load Label(1) ' où 1 est l'index du contrôle
Label(1).Visible = True ' Autorise affichage
Label(1).Top = ... ' redéfini sa position
Label(1).Left = ...
Label(1).Width = ...
Label(1).Height = ...
Pour en créer un second, il te suffit de faire pareil, mais avec l'index suivant : Load Label(2) ...
Pour les autres controles, c'est exactement la même chose.
Vala
Jack
alonsyl
Messages postés348Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention 6 novembre 200812 4 avril 2005 à 14:00
bonjour,
j'ai justement un pbl d'indexaton !
j'ai alloue des controles dynnamiquement a l'ouverture de ma form2 en fonction d'element que m'avait specifie l'utilisateur en form1.
comment faire s'il change d'avis et desire supprimer 1 controle ?
moi j'aurais aime unloader uniquement le controle specifie et reindexer (increment de -1) ceux qui suivent mais je n'y arrive pas. je n'ai reussi qu'a tout unloader pour tout reunloader a l'exeption du controle concerne mais je trouve ca bcp trop lourd !
commment feriez vous a ma place ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 avril 2005 à 17:49
Salut
Coup de bol que j'aie activé le mail sur ce post, sinon, depuis 2003 ...
Oui, tu peux faire des Unload monObjet(monIndex)
Non, on ne peut pas réindexer les objets
Par contre, tu peux facilement tester si l'objet existe :
If monObjet(monIndex) Is Nothing Then
' rien à cet index : je peux refaire un Load
End If
Suffit d'intégrer ce test lorsque tu veux créer un nouvel objet afin de boucher les trous.
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
Vous n’avez pas trouvé la réponse que vous recherchez ?
boudas
Messages postés13Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention 8 octobre 2008 8 août 2005 à 16:01
bonjour
j'ai exactement le même soucis que celui demandé dans ce post mais je n'arrive pas trouver pour mettre l'index à 0
peut etre est ce du au fait que j'utilise VB6 sous Excel ?
Et si oui, connaissez vous un moyen de créer un controle de facon dynamique via le VB 6 d'Excel ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 8 août 2005 à 18:13
ReSalut
... Pas d'indexation possible sous VBA = Excel, uniquement VB6, désolé.
Pour décharger un controle, il suffit de faire Unload monControle(monIndex)
Ensuite, quand tu auras besoin de recharger un nouveau controle, il te suffit de faire ce genre de petite boucle pour tester s'il y a un trou dans ta collection :
Trouvé = 0
For r = 1 To UBound(monControle)
If monControle(r) Is Nothing Then
' Index libre trouvé !
Trouvé = r
Exit For
Next r
If Trouvé = 0 Then
' Pas trouvé : ajoute à la suite
Load monControle(UBound(monControle) + 1)
Else
' Trou trouvé
Load monControle(Trouvé)
End If ' ...
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je