OVH Cloud OVH Cloud

créer dynamiquement en vb6

8 réponses
Avatar
Rombeau Jonathan
Bonjour à tous j'essaye de créer dynamiquement des textbox mais cela ne
fonctionne pas j'ai une erreur pourriez-vous m'aider ???

Dim cpt_int As Integer
cpt_int = 1
Do While Not RS.EOF
Form11.Controls.Add "VB.textbox", "text" & cpt_int, Form11

With Form11!(Text & cpt_int) => ERREUR !!!!
.Visible = True
.Width = 500
.Caption = cpt
End With
cpt_int = cpt_int + 1
RS.MoveNext
Loop

8 réponses

Avatar
François Picalausa
Hello,

Tu ne peux pas accéder si facilement a un contrôle créé dynamiquement (sauf
si tu les crées avec un contrôle indexé).
Il faut donc garder une référence au contrôle créé:

Dim NewTextBox As TextBox
Set NewTextBox = Form11.Controls.Add("VB.textbox", "text" & cpt_int, Form11)
With NewTextBox
.Visible = True
.Width = 500
.Caption = cpt
End With

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message de
news:
Bonjour à tous j'essaye de créer dynamiquement des textbox mais cela
ne fonctionne pas j'ai une erreur pourriez-vous m'aider ???

Dim cpt_int As Integer
cpt_int = 1
Do While Not RS.EOF
Form11.Controls.Add "VB.textbox", "text" & cpt_int, Form11

With Form11!(Text & cpt_int) => ERREUR !!!!
.Visible = True
.Width = 500
.Caption = cpt
End With
cpt_int = cpt_int + 1
RS.MoveNext
Loop


Avatar
Rombeau Jonathan
Merci beaucoup maintenant je suis coincé car je débute en vb et je vois
qu'en réalité tous les textbox sont mis les uns quasiment sur les autres :s
comment faire pour qu'ils soient les uns en dessous des autres ?



"François Picalausa" a écrit dans le message de news:

Hello,

Tu ne peux pas accéder si facilement a un contrôle créé dynamiquement
(sauf si tu les crées avec un contrôle indexé).
Il faut donc garder une référence au contrôle créé:

Dim NewTextBox As TextBox
Set NewTextBox = Form11.Controls.Add("VB.textbox", "text" & cpt_int,
Form11)
With NewTextBox
.Visible = True
.Width = 500
.Caption = cpt
End With

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message de
news:
Bonjour à tous j'essaye de créer dynamiquement des textbox mais cela
ne fonctionne pas j'ai une erreur pourriez-vous m'aider ???

Dim cpt_int As Integer
cpt_int = 1
Do While Not RS.EOF
Form11.Controls.Add "VB.textbox", "text" & cpt_int, Form11

With Form11!(Text & cpt_int) => ERREUR !!!!
.Visible = True
.Width = 500
.Caption = cpt
End With
cpt_int = cpt_int + 1
RS.MoveNext
Loop






Avatar
François Picalausa
Hello,

Tu peux déterminer la hauteur d'une textbox par sa propriété height.
Tu peux déterminer la position y de ce même textbox par Top.

Avec
Position Y du textbox n°x = Position Y du premier textbox + x * (Hauteur
d'un textbox + espacement entre deux textboxes)

Cela donne:
Dim NewTextBox As TextBox
Set NewTextBox = Form11.Controls.Add("VB.textbox", "text" & cpt_int, Form11)
With NewTextBox
.Visible = True
.Width = 500
.Caption = cpt
.Top = YBase + cpt_int * (NewTextBox.Height + Espacement)
End With

Où tu remplace YBase par la hauteur initiale souhaitée et Espacement par
l'espacement entre deux texboxes.
Mais je te conseille de jeter un oeil à la faq voir si les contrôles indexés
ne seraient pas plus appropriés:
http://faq.vb.free.fr/index.php?questionˆ

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message de
news:
Merci beaucoup maintenant je suis coincé car je débute en vb et je
vois qu'en réalité tous les textbox sont mis les uns quasiment sur
les autres :s comment faire pour qu'ils soient les uns en dessous des
autres ?


Avatar
Rombeau Jonathan
Merci beaucoup pour tes réponses assez rapides je dois dire !
J'ai réussi à contrôler les textbox merci ...


"François Picalausa" a écrit dans le message de news:
%
Hello,

Tu peux déterminer la hauteur d'une textbox par sa propriété height.
Tu peux déterminer la position y de ce même textbox par Top.

Avec
Position Y du textbox n°x = Position Y du premier textbox + x * (Hauteur
d'un textbox + espacement entre deux textboxes)

Cela donne:
Dim NewTextBox As TextBox
Set NewTextBox = Form11.Controls.Add("VB.textbox", "text" & cpt_int,
Form11)
With NewTextBox
.Visible = True
.Width = 500
.Caption = cpt
.Top = YBase + cpt_int * (NewTextBox.Height + Espacement)
End With

Où tu remplace YBase par la hauteur initiale souhaitée et Espacement par
l'espacement entre deux texboxes.
Mais je te conseille de jeter un oeil à la faq voir si les contrôles
indexés ne seraient pas plus appropriés:
http://faq.vb.free.fr/index.php?questionˆ

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message de
news:
Merci beaucoup maintenant je suis coincé car je débute en vb et je
vois qu'en réalité tous les textbox sont mis les uns quasiment sur
les autres :s comment faire pour qu'ils soient les uns en dessous des
autres ?






Avatar
Rombeau Jonathan
Problèmes, après avoir créé dynamiquement les textbox je ne vois pas comment
récupérer les valeurs que l'utilisateur a éncodé à l'intérieur :'(



"Rombeau Jonathan" a écrit dans le message de news:

Merci beaucoup pour tes réponses assez rapides je dois dire !
J'ai réussi à contrôler les textbox merci ...


"François Picalausa" a écrit dans le message de
news: %
Hello,

Tu peux déterminer la hauteur d'une textbox par sa propriété height.
Tu peux déterminer la position y de ce même textbox par Top.

Avec
Position Y du textbox n°x = Position Y du premier textbox + x * (Hauteur
d'un textbox + espacement entre deux textboxes)

Cela donne:
Dim NewTextBox As TextBox
Set NewTextBox = Form11.Controls.Add("VB.textbox", "text" & cpt_int,
Form11)
With NewTextBox
.Visible = True
.Width = 500
.Caption = cpt
.Top = YBase + cpt_int * (NewTextBox.Height + Espacement)
End With

Où tu remplace YBase par la hauteur initiale souhaitée et Espacement par
l'espacement entre deux texboxes.
Mais je te conseille de jeter un oeil à la faq voir si les contrôles
indexés ne seraient pas plus appropriés:
http://faq.vb.free.fr/index.php?questionˆ

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message de
news:
Merci beaucoup maintenant je suis coincé car je débute en vb et je
vois qu'en réalité tous les textbox sont mis les uns quasiment sur
les autres :s comment faire pour qu'ils soient les uns en dessous des
autres ?










Avatar
ng
Salut,

Il faut déclarer un tableau de référence à tes txtbox en public par exemple
ou récupérer une reférence avec la collection Controls.
Mais je te conseil de charger tes txtbox avec un groupe de controle, ce sera
plus facile pour récupérer les événements.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

Rombeau Jonathan wrote:
Problèmes, après avoir créé dynamiquement les textbox je ne vois pas
comment récupérer les valeurs que l'utilisateur a éncodé à
l'intérieur :'(


"Rombeau Jonathan" a écrit dans le message
de news:
Merci beaucoup pour tes réponses assez rapides je dois dire !
J'ai réussi à contrôler les textbox merci ...


"François Picalausa" a écrit dans le message de
news: %
Hello,

Tu peux déterminer la hauteur d'une textbox par sa propriété height.
Tu peux déterminer la position y de ce même textbox par Top.

Avec
Position Y du textbox n°x = Position Y du premier textbox + x *
(Hauteur d'un textbox + espacement entre deux textboxes)

Cela donne:
Dim NewTextBox As TextBox
Set NewTextBox = Form11.Controls.Add("VB.textbox", "text" & cpt_int,
Form11)
With NewTextBox
.Visible = True
.Width = 500
.Caption = cpt
.Top = YBase + cpt_int * (NewTextBox.Height + Espacement)
End With

Où tu remplace YBase par la hauteur initiale souhaitée et
Espacement par l'espacement entre deux texboxes.
Mais je te conseille de jeter un oeil à la faq voir si les contrôles
indexés ne seraient pas plus appropriés:
http://faq.vb.free.fr/index.php?questionˆ

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message
de news:
Merci beaucoup maintenant je suis coincé car je débute en vb et je
vois qu'en réalité tous les textbox sont mis les uns quasiment sur
les autres :s comment faire pour qu'ils soient les uns en dessous
des autres ?








Avatar
François Picalausa
Hello,

Tu peux essayer ceci:

Me.Controls("Nom du contrôle").Caption = 0

--
François Picalausa

"Rombeau Jonathan" a écrit dans le message de
news:
Problèmes, après avoir créé dynamiquement les textbox je ne vois pas
comment récupérer les valeurs que l'utilisateur a éncodé à
l'intérieur :'(


Avatar
ng
Ou recupérer la reférence une bonne fois pour toute afin de ne pas faire
appel sans cesse à la collection Controls.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/

François Picalausa wrote:
Hello,

Tu peux essayer ceci:

Me.Controls("Nom du contrôle").Caption = 0


"Rombeau Jonathan" a écrit dans le message de
news:
Problèmes, après avoir créé dynamiquement les textbox je ne vois pas
comment récupérer les valeurs que l'utilisateur a éncodé à
l'intérieur :'(