OVH Cloud OVH Cloud

VB6 : Création dynamique d'objets

2 réponses
Avatar
Pascal Martin
Bonjour,

Je souhaite ajouter dynamiquement des textbox et checkbox à un formulaire.
La difficulté vient de ce que j'aimerai que toutes mes textbox appartiennent
au même groupe de contrôle.

Le problème est que la propriété "index" de ces contrôles est en lecture
seule.

Voici un exemple de code... qui ne fonctionne que pour la création du
premier objet :


Dim WithEvents txtSEL As VB.TextBox

Private Sub Form_Load()

Dim index As Integer

For index = 0 To 4
Set txtSEL = Form1.Controls.Add("VB.textbox", "txtSELECTION", Form1)
txtSEL.Move 0, index * 270, 600, 255
txtSEL.Visible = True
Next
End Sub


Est-ce que quelqu'un a une solution à me proposer pour ajouter des contrôles
appartenant à un même groupe ?

Merci pour votre aide,
Pascal Martin

2 réponses

Avatar
Jacques93
Bonjour Pascal Martin,
Pascal Martin a écrit :
Bonjour,

Je souhaite ajouter dynamiquement des textbox et checkbox à un formulaire.
La difficulté vient de ce que j'aimerai que toutes mes textbox appartiennent
au même groupe de contrôle.

Le problème est que la propriété "index" de ces contrôles est en lecture
seule.

Voici un exemple de code... qui ne fonctionne que pour la création du
premier objet :


Dim WithEvents txtSEL As VB.TextBox

Private Sub Form_Load()

Dim index As Integer

For index = 0 To 4
Set txtSEL = Form1.Controls.Add("VB.textbox", "txtSELECTION", Form1)
txtSEL.Move 0, index * 270, 600, 255
txtSEL.Visible = True
Next
End Sub


Est-ce que quelqu'un a une solution à me proposer pour ajouter des contrôles
appartenant à un même groupe ?

Merci pour votre aide,
Pascal Martin





Tu met simplement sur ta feuille un TextBox avec la propriété Index = 0,
par défaut il va s'appeler Text1(0), et ensuite :

Private Sub Form_Load()
Dim i As Integer

For i = 1 To 4
Load Text1(i)
Text1(i).Move 0, i * 270, 600, 255
Text1(i).Visible = True
Next i
End Sub

Les procèdures d'événement liées au contrôle recevront l'index en 1er
paramètre, par exemple :

Private Sub Text1_Change(Index As Integer)
End Sub

PS: Il vaut mieux éviter de nommer des variables avec des noms de
propriété, de fonctions, etc ...


--
Cordialement,

Jacques.
Avatar
Pascal Martin
Merci beaucoup... je ne connaissais pas l'utilisation de Load dans ce cas.
J'ai cherché beaucoup de complications :-)

Encore merci,
Pascal Martin




"Jacques93" a écrit dans le message de news:

Bonjour Pascal Martin,
Pascal Martin a écrit :
Bonjour,

Je souhaite ajouter dynamiquement des textbox et checkbox à un
formulaire. La difficulté vient de ce que j'aimerai que toutes mes
textbox appartiennent au même groupe de contrôle.

Le problème est que la propriété "index" de ces contrôles est en lecture
seule.

Voici un exemple de code... qui ne fonctionne que pour la création du
premier objet :


Dim WithEvents txtSEL As VB.TextBox

Private Sub Form_Load()

Dim index As Integer

For index = 0 To 4
Set txtSEL = Form1.Controls.Add("VB.textbox", "txtSELECTION", Form1)
txtSEL.Move 0, index * 270, 600, 255
txtSEL.Visible = True
Next
End Sub


Est-ce que quelqu'un a une solution à me proposer pour ajouter des
contrôles appartenant à un même groupe ?

Merci pour votre aide,
Pascal Martin





Tu met simplement sur ta feuille un TextBox avec la propriété Index = 0,
par défaut il va s'appeler Text1(0), et ensuite :

Private Sub Form_Load()
Dim i As Integer

For i = 1 To 4
Load Text1(i)
Text1(i).Move 0, i * 270, 600, 255
Text1(i).Visible = True
Next i
End Sub

Les procèdures d'événement liées au contrôle recevront l'index en 1er
paramètre, par exemple :

Private Sub Text1_Change(Index As Integer)
End Sub

PS: Il vaut mieux éviter de nommer des variables avec des noms de
propriété, de fonctions, etc ...


--
Cordialement,

Jacques.