Création dynamique de composants

Résolu
Tiger - 25 déc. 1999 à 11:11
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 10 août 2007 à 08:49
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

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
10 août 2007 à 08:49
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
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
h_adil Messages postés 231 Date d'inscription mercredi 27 avril 2005 Statut Membre Dernière intervention 10 juin 2009
29 avril 2005 à 12:50
salut est ce que on peut creer automatiquement des zone de texte
programation .....
Rejoignez-nous