Création GroupBox dynamique

Résolu
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 19 mars 2015 à 18:33
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 20 mars 2015 à 06:39
Bonjour le forum,

Présentation :
Ingé Exploitation en InfoGérance (Bull Gcos7 [Jcl, Gcl, IDS2, Cobol], Dos, vbs, hta, html, C2O, VTOM & $U)

Installation hier de VB2010 Express.
Donc new dans ce domaine !!!

Mon projet : Convertir une de mes applis hta-vbs en VB 2010 Express.

Je souhaite créer dynamiquement plusieurs GroupeBox dans une Form.
Ma première difficulté, la première GroupeBox :
Option Strict On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Création GroupeBox1 et ajout Buttons.
Dim groupBox1 As New GroupBox()

Dim Button1 As New Button()
Button1.Location = New Point(40, 15)
Button1.Text = "Bouton1"
groupBox1.Controls.Add(Button1)

Dim Button2 As New Button()
Button2.Location = New Point(40, 40)
Button2.Text = "Bouton2"
groupBox1.Controls.Add(Button2)

Dim Button3 As New Button()
Button3.Location = New Point(40, 65)
Button3.Text = "Bouton3"
groupBox1.Controls.Add(Button3)

groupBox1.Text = "Génération Plan de Production"

' Ajout Groupboxes dans Form1.
groupBox1.Top = 40
groupBox1.Left = 20
groupBox1.Width = 170
Me.Controls.Add(groupBox1)
'AddHandler groupBox1.Click, AddressOf groupBox1_click
End Sub
End Class

Ce code m'affiche correctement les 3 boutons dans la Form1.
Mon but étant de parser un fichier .txt pour créer les x buttons Client dans ce premier GroupeBox,
j'essaie donc une boucle For ... Next.
Par contre, le code ci-dessous ne m'affiche que le Button1 dans la Form1.
Question : où est mon erreur !!!
Option Strict On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Création GroupeBox1 et ajout Buttons.
Dim groupBox1 As New GroupBox()
Dim intPos As Integer = 25

For i As Integer = 0 To 2
MessageBox.Show("check " & i + 1 & vbTab & "Bouton" & i + 1)
Dim Button As New Button()
Button.Location = New Point(15, intPos + 25)
Button.Text = "Bouton" & i + 1
groupBox1.Controls.Add(Button)
'AddHandler groupBox1.Click, AddressOf groupBox1_click
Next
' Ajout Groupboxes dans Form1.
groupBox1.Top = 40
groupBox1.Left = 20
groupBox1.Width = 170
Me.Controls.Add(groupBox1)
'AddHandler groupBox1.Click, AddressOf groupBox1_click
End Sub
End Class

Vous l'aurez certainement compris, après avoir résolu le problème de la boucle, ma prochaine question, dans un new post, sera :
- comment récupérer le handle du bouton cliqué.

Merci d'avance pour vos réponses,

5 réponses

Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
19 mars 2015 à 18:46
Bonsoir cs_JMO.

Pour autant qu'il m'en souvienne, un contrôle créé dynamiquement a sa propriété Visible égale à False. Il faut donc mettre cette propriété à True à chaque création dynamique.
Cordialement.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
19 mars 2015 à 18:58
Bonsoir Zermelo,

L'ajout de Button.Visible = True et GroupBox1.Visible = True dans ma boucle For ... Next n'a pas résolu mon souci.

Le text "blabla" de Groupbox1 est visible, ainsi que seul "Bouton1" au lieu de voir Bouton1, Bouton2 et Bouton3 dans Form1.

jean-marc
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 mars 2015 à 19:15
Bonjour, JMO,
A mon avis, tes boutons sont superposés, raison pour laquelle tu n'en vois qu'un (celui du dessus)
Button.Location = New Point(15, intPos + 25)

comme intpos n'évolue pas avec i, ils sont tous un au dessus de l'autre.
Idem pour tes groupboxes.
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
19 mars 2015 à 19:32
Bonsoir Jacques

Effectivement en ajout un select case i et en modifiant Button.Location les boutons étaient bien superposés.
A moi maintenant de faire la bonne présentation dans Form1.

Merci et bonne soirée,
jean-marc
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211 > cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018
19 mars 2015 à 20:43
Re-bonsoir, Jean-Marc,
Pour ce qui est de la "répartition" dans le container, c'est peut-être de la pure arithmétique.
Fouille dans les sources VB6 de mon "prédécesseur" jmfmarques. Tu y trouveras ce calcul tout fait (un tableau de contrôles répartis et à répartition paramétrée).
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
19 mars 2015 à 20:47
Merci Jacques

Je vais "farfouiller" dans notre illustre vb.france car je peine au design de ma form avec ce premier GroupBox.

jean-marc
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 20/03/2015 à 08:09
C'est là :
http://codes-sources.commentcamarche.net/source/40559-dressage-automatique-et-parametre-d-une-grille-de-textboxes

Je' l'avais fait en VB6, mais cela importe peu : ce sont les calculs arithmétiques (et ils sont les mêmes quel que soit le langage de développement) qui doivent t'intéresser.
Les valeurs (donc modifiables) arrêtées pour le paramétrages sont dans le module .bas
Je n'ai pas voulu faire une interface pour modifier ces valeurs, considérant qu'une telle grille correspondant au besoin d'UNE application, seul le développeur est concerné et définit donc directement ces paramètres. L'utilisateur n'a donc pas, lui, à subir une interface !

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
Rejoignez-nous