Comment créer dynamiquement une textbox

olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 20 oct. 2005 à 14:22
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008 - 21 oct. 2005 à 01:29
Bonjour je m'explique,



j'ai une listbox dans laquel sont affiché tout les champs de la table toto d'une base de données.

Je cherche à réalisé un bouton qui ajouter une nouvelle valeur dans ma
table toto. pour cela mon bouton ouvrirai une fenêtre dans laquel
serait créer automatique x label et x textbox ("x" correspondant au
nombre d echamp présent dans la table toto et affiché dans ma liste
box). Les labels me servirai à afficher le nom de mes champs et les
textbox la valeur que je veu affecter à ces champ.



Private Sub NewEnr2_Click()



Dim i As Integer

Dim nom(50, 1) As String



'Affiche a la feuille que je
veu faire apparaître (feuille new_enr) le titre "Nouvelle
enregistrement pour " le nom d ema table""

new_enr.titre.Caption = "Nouvelle enregistrement pour " & List1.Text & " :"



For i = 0 To 9

new_enr.nom_champ(i).Visible = False 'nom_champ correspond aux labels

new_enr.txt_new_val(i).Visible = False 'txt_new_val correspond aux text box

Next i



For i = 0 To List2.ListCount - 1

nom(i, 1) = List2.List(i)

new_enr.nom_champ(i).Visible = True

new_enr.txt_new_val(i).Visible = True

new_enr.nom_champ(i).Caption = nom(i, 1) & " :"

Next i



new_enr.Visible = True 'Affiche la feuille avec les Labels et TextBox



End Sub



Le problème de ce code est le suivant :

Il nécessite d'avoir créer à l'avance 10 label et textbox que je rend
invisible avant le chargement de la feuille puis affiche le nombre
nécessaire pour visualiser tout mes champs.



Le pb est que ce code permet de gérer les tables qui n'ont pas plus de 10 champs.

Moi ce que je voudrai c'est : après avoir compter le nombre de champ,
créer dynamique un nombre de label et textbox correspondant à ce nombre
de champ.



Je pense qu'il faut utiliser la fonction load mais je n'y arrive pas.



Si quelqu'un peut m'aider.



Merci d'avance

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 oct. 2005 à 14:32
Salut,



Pour repondre a ta demande il faut utiliser l'index des controles



Tu crée un labl(0) invisible (le laisser invisible)

Et apres tu fais

Load label(i)

label(i).visible = true

label(i).top = ....



....



Esperant t'avoir guider



J'ai un vieux messages sur le forum qui explique mieuxmais j'ai pas le temps de chercher dsl:,
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
20 oct. 2005 à 14:45
Bonjour,

Voici un exemple de création de Texbox dynamique.Place sur ta Form Un TextBox avec l'index à 0 et un CommandButton.



Private Sub Command1_Click()

' Déclare la variable.

Dim I

'Positionne le bouton sur la barre d'outils.et ensuite s'amuse

Text1(0).Move 0, 0, 700, 300

' Crée les autres boutons.

For I = 1 To 3

' Crée un bouton.

Load Text1(I)

' Place et dimensionne le bouton.

Text1(I).Move I * 800, 0, 800, 300

' Affiche le bouton.

Text1(I).Visible = True

Next I

' Définit les légendes des boutons.

Text1(0).Text = "Bonjour"

Text1(1).Text = "comment"

Text1(2).Text = "vas"

Text1(3).Text = "tu ?"

End Sub



jpleroisse
0
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
20 oct. 2005 à 18:39
Ok merci les gars ca doit être ca que je veu.

Je vais tester.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 oct. 2005 à 20:08
Aller une deuxieme methode a tester

J'ai pas testé
For i = 1 to inI

Form1.Controls.Add "VB.Textbox", "Text" & (i)
Dim oLabel As VB.TextBox
Set oLabel = Form1.Controls("Text" & CStr(i))

With oLabel
.Top = var_num1
.Visible = True
.Text = "Hello" & i
.Left = 100
End With

var_num1 = var_num1 + 800
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
olivier857 Messages postés 188 Date d'inscription mardi 21 décembre 2004 Statut Membre Dernière intervention 10 avril 2008
21 oct. 2005 à 01:29
Ca marche très bien, encore merci de votre aide.
0
Rejoignez-nous