Création GroupBox dynamique [Résolu]

Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 19 mars 2015 à 18:33 - Dernière réponse :
Messages postés
18039
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,
Afficher la suite 

Votre réponse

7 réponses

Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Dernière intervention
13 août 2017
- 19 mars 2015 à 18:46
0
Merci
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.
Commenter la réponse de Zermelo
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 19 mars 2015 à 18:58
0
Merci
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
Commenter la réponse de cs_JMO
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 19 mars 2015 à 19:15
0
Merci
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.
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 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
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
>
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
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).
Commenter la réponse de ucfoutu
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Dernière intervention
24 juin 2018
- 19 mars 2015 à 20:47
0
Merci
Merci Jacques

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

jean-marc
Commenter la réponse de cs_JMO
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- Modifié par ucfoutu le 20/03/2015 à 08:09
0
Merci
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
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.