Création dynamique de composants [Résolu]

Signaler
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Salut, j'aimerais savoir comment on crèe des composants dynamiquement à partir du code (TextBox, Picture, Label ...).

Je suppose qu'on doit utiliser l'instruction New, mais l'aide de VB indique que ce n'est possible qu'avec des formulaires. Alors coment faire ?

Merci à celui qui me répondra.

Tiger

4 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
67
plusieurs solutions :

groupe de controles (renseigner l'Index de tes controles), ensuite tu fais
Load Text1( 1 )

ou bien encore :
Form1.Controls.Add ....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 123 internautes nous ont dit merci ce mois-ci

On utilise 'New' habituellement avec les objets et les classes.
Pour ce qui est des contrôles, habituellement tu dois en avoir au moins
un avec un index à 0 pour avoir "le droit" d'en charger d'autres.
Tu peux ainsi avoir 3 Textbox, index 0 à 2 et en ajouter au besoin
par code.
Je crois qu'il est possible de déclarer une variable de type
TextBox avec New, te permettant d'opérer sur une TB 'Invisible' et qui
ne pourra jamais l'être, l'interface n'existe pas. Probablement que
c'est plus pratique dans le cas d'une PictureBox, parce que une
variable serais moins lourde qu'une vraie PB invisible.

Dans le cas d'un textbox tu pourrais écrire

Dim x As Integer

'Trouver et augmenter le nombre
x = TblText.UBound 'Ici, si tu peux utiliser une variable globale, tu
'économise un peu de processeur pcq lire une
'propriété c'est lent.
x = x + 1

Load TblText(x) 'On doit désigner quel index charger
TblText(x).Visible = True 'Sinon caché
'Deux lignes suivantes, placer le nouveau contrôle sous le précédent.
TblText(x).Left = TblText(x - 1).Left
TblText(x).Top = TblText(x - 1).Top + TblText(x - 1).Height + 60

Pour te débarrasser d'un élément (préférablement le dernier)

Unload TblText(x)

Moi habituellement j'opère sur des Menus.
Salut Amonbofis,

Grand merci pour ton aide.

Grâce à toi, je peux créer des composants dynamiquement à n'en plus finir !

Encore merci.

Tiger
Messages postés
231
Date d'inscription
mercredi 27 avril 2005
Statut
Membre
Dernière intervention
10 juin 2009

salut est ce que on peut creer automatiquement des zone de texte
programation .....