Ajout de controls combobox à un formulaire au moment de l'exécution :
Cela sert à ne pas être limiter en nombre de composants sur un formulaire
Source / Exemple :
Public Class clsCBO
Public Left As Long
Public Top As Long
Public Width As Double
Public Height As Double
Public Colonne As Long
Public Ligne As Long
Public Control As Object
Public Indice As Long
Public Nom As String
Public Const csCBOFontName As String = "Microsoft Sans Serif"
Public Const csCBOFontSize As Single = 8.25
Public Sub sbRempliCL(ByVal C As ComboBox, ByVal Ind As Integer, ByVal Lig As Long, _
ByVal Col As Long)
Nom = C.Name
Left = C.Left
Top = C.Top
Width = C.Width
Height = C.Height
Control = C.Controls
Indice = Ind
Ligne = Lig
Colonne = Col
End Sub
'Création de combobox
Public Sub sbCreateCombo(ByVal Name As String, ByVal X As Integer, ByVal Y As Integer, _
ByVal W As Integer, ByVal H As Integer)
Dim FRM As frmGestPlans
Dim CB As New ComboBox, Lig As Integer
'Formulaire sur lequel j'insère le combobox
FRM = gFrmGP.gFormulaireGestPlans
'Onglet présent sur le formulaire et sur lequel vont s'insérer les controls
'Si on ne met pas d'onglet on est limité en nombre par les dimensions du formulaire
With FRM.tabGP.TabPages(0)
CB.Name = Name
CB.SetBounds(X, Y, W, H)
CB.Scale(1)
CB.Text = ""
CB.Font = New Font(csCBOFontName, csCBOFontSize, style:=FontStyle.Bold)
Lig = gFrmGP.fnExtractLigDeControl(Name)
If Lig Mod 2 <> 0 Then
CB.BackColor = System.Drawing.Color.PaleTurquoise
End If
CB.CreateControl()
CB.Update()
.Controls.Add(CB)
CB.BringToFront()
CB.Visible = True
CB.Show()
CB.Focus()
End With
End Sub
Public Function fnRempliClsCBO(ByVal CBO As ComboBox) As clsCBO
Dim CL As New clsCBO
CL.Control = CBO
CL.Height = CBO.Height
CL.Left = CBO.Left
CL.Top = CBO.Top
CL.Width = CBO.Width
fnRempliClsCBO = CL
End Function
End Class
Public Class clsEvents
Friend WithEvents CBO As ComboBox
Public Sub sbAddEventsCBO()
On Error Resume Next
RemoveHandler CBO.SelectedIndexChanged, AddressOf CBO_SelectedIndexChanged
AddHandler CBO.SelectedIndexChanged, AddressOf CBO_SelectedIndexChanged
RemoveHandler CBO.SelectedValueChanged, AddressOf CBO_SelectedValueChanged
AddHandler CBO.SelectedValueChanged, AddressOf CBO_SelectedValueChanged
RemoveHandler CBO.TextChanged, AddressOf CBO_TextChanged
AddHandler CBO.TextChanged, AddressOf CBO_TextChanged
End Sub
Public Sub CBO_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBO.SelectedIndexChanged
Dim Ligne As Integer, Col As Integer, B As Boolean
If bEvents Then
gFrmGP.sbRecupLigCol(CBO.Name, Ligne, Col)
B = gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).chkRev.Checked
If B Then
gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).ADiffuser = CBO.Text
Else
gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).DiffActuelle = CBO.Text
End If
End If
End Sub
Public Sub CBO_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBO.SelectedValueChanged
Dim Ligne As Integer, Col As Integer, B As Boolean
If bEvents Then
gFrmGP.sbRecupLigCol(CBO.Name, Ligne, Col)
B = gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).chkRev.Checked
If B Then
gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).ADiffuser = CBO.Text
Else
gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).DiffActuelle = CBO.Text
End If
End If
End Sub
Public Sub CBO_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBO.TextChanged
Dim Ligne As Integer, Col As Integer, B As Boolean
If bEvents Then
gFrmGP.sbRecupLigCol(CBO.Name, Ligne, Col)
B = gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).chkRev.Checked
If B Then
gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).ADiffuser = CBO.Text
Else
gFrmGP.gLigGestPlans.Item(Ligne).cRevDiffusee.Item(Col).DiffActuelle = CBO.Text
End If
End If
End Sub
End Class
Conclusion :
J'ai pas pris le temps de commenter désoler
ce sera pour la prochaine fois
clsEvents gère les événements
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.