Créer dynamiquement une forme... problème sur container
6 réponses
SgW
Bonjour,
je souhaite créer dynamiquement une forme en lisant un fichier paramètre
j'arrive à créer mes frames et mes checkboxes mais je n'arrive pas à
attacher les checkboxes aux frames appropriées.
J'ai une forme frmTest, contenant une frame fQuery
Je lis le fichier paramètres avec les fonctions présentes dans un module
modParameters
mon souci est qu'une checkbox créée dynamiquement doit se trouver à
l'intérieur d'une frame créée dynamiquement.
je n'arrive pas à récupérer l'objet Frame afin d'assigner la propriété
Container pour mes CheckBoxes
Merci d'avance
'CODE :
Private Sub LoadInterface()
Dim cSection As New Collection, NbInformation As Long, CptSection As
Long, CptInformation As Long
Dim oFrame As VB.Frame, oCheckBox As VB.CheckBox, oSection, oInformation
Dim leftPosition As Long, midPosition As Long
'Création de la collection des Sections de Données
Set cSection = modParameters.GetDataSection
CptSection = 0
leftPosition = lLeftFrameSection
'Parcours de la collection des Sections de Données
For Each oSection In cSection
If bObjectsLoaded Then 'Récupération de la Frame déjà instanciée
Set oFrame = frmTest.Controls.Item("frame_" & oSection)
Else 'Création de la Frame
Set oFrame = frmTest.Controls.Add("VB.Frame", "frame_" & oSection)
End If
'Colle la Frame dans une autre Frame
Set oFrame.Container = frmTest.fQuery
With oFrame
.Caption = " " & oSection & " "
.Top = lTopFrameSection
.Appearance = 0
If CptSection > 0 Then
.Left = leftPosition
Else
.Left = lLeftFrameSection
End If
leftPosition = leftPosition + lWidthFrameSection +
lLeftFrameSection
'Récupération des informations de la Section Data en cours
NbInformation = modParameters.GetNbInformation(CptSection)
CptInformation = 0
'Parcours de la Collection des informations de la Section Data
en cours
For Each oInformation In GetSectionInformation(CptSection)
If bObjectsLoaded Then 'Récupération de la CheckBox
Set oCheckBox = frmTest.Controls.Item("checkbox_" &
oSection & "_" & CptInformation)
Else 'Création de la CheckBox
Set oCheckBox = frmTest.Controls.Add("VB.CheckBox",
"checkbox_" & oSection & "_" & CptInformation)
End If
'Assigne les propriétés (.Caption, .Value, ...) de la CheckBox
Call modParameters.UpdateCheckBox(oCheckBox, CptSection,
CptInformation)
With oCheckBox
.Top = lTopCheckBox + CptInformation * (lBlankCheckBox +
lHeightCheckBox)
.Left = lLeftCheckBox
.Width = lWidthCheckBox
.Height = lHeightCheckBox
End With
CptInformation = CptInformation + 1
Set oCheckBox = Nothing
Next oInformation
CptSection = CptSection + 1
.Width = lWidthFrameSection
.Visible = True
End With
Set oFrame = Nothing
Next oSection
End Sub
Hélàs le Set oCheckBox.Container = oFrame ou le Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection) ne fonctionnent pas
Y a t-il un message d'erreur? Ou se trouve positionnné le CheckBox Cheez moi, les deux méthodes fonctionnent.
-- Cordialement,
Jacques.
SgW
"Jacques93" a écrit :
SgW wrote: > "Jacques93" a écrit : >
[...]
> > Hélàs le > Set oCheckBox.Container = oFrame > ou le > Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection) > ne fonctionnent pas >
Y a t-il un message d'erreur? Ou se trouve positionnné le CheckBox Cheez moi, les deux méthodes fonctionnent.
-- Cordialement,
Jacques.
Pas de message d'erreur autre que la fameuse boite de dialogue Debug, End avec une Run-time Error '730' indiquant que le controle (ayant pour nom la chaine de caractère de la .Caption) n'existe pas.
"Jacques93" a écrit :
SgW wrote:
> "Jacques93" a écrit :
>
[...]
>
> Hélàs le
> Set oCheckBox.Container = oFrame
> ou le
> Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection)
> ne fonctionnent pas
>
Y a t-il un message d'erreur? Ou se trouve positionnné le CheckBox
Cheez moi, les deux méthodes fonctionnent.
--
Cordialement,
Jacques.
Pas de message d'erreur autre que la fameuse boite de dialogue Debug, End
avec une Run-time Error '730' indiquant que le controle (ayant pour nom la
chaine de caractère de la .Caption) n'existe pas.
> > Hélàs le > Set oCheckBox.Container = oFrame > ou le > Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection) > ne fonctionnent pas >
Y a t-il un message d'erreur? Ou se trouve positionnné le CheckBox Cheez moi, les deux méthodes fonctionnent.
-- Cordialement,
Jacques.
Pas de message d'erreur autre que la fameuse boite de dialogue Debug, End avec une Run-time Error '730' indiquant que le controle (ayant pour nom la chaine de caractère de la .Caption) n'existe pas.
Jacques93
SgW wrote:
SgW wrote:
"Jacques93" a écrit :
[...]
Hélàs le Set oCheckBox.Container = oFrame ou le Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection) ne fonctionnent pas
[...]
Pas de message d'erreur autre que la fameuse boite de dialogue Debug, End avec une Run-time Error '730' indiquant que le controle (ayant pour nom la chaine de caractère de la .Caption) n'existe pas.
Que contient la variable oSection ? Peux tu essayer le code suivant (simplifié) : ============================================ Private Sub LoadInterface()
Dim oFrame As VB.Frame, oCheckBox As VB.CheckBox
Set oFrame = frmTest.Controls.Add("VB.Frame", "frame_1") Set oFrame.Container = frmTest.fQuery oFrame.Visible = True With oFrame .Caption = " Ma Frame " .Appearance = 1 .Top = 240 .Left = 240 .Width = 2000 .Height = 1500
Set oCheckBox = frmTest.Controls.Add("VB.CheckBox", "checkbox_1") oCheckBox.Visible = True 'Set oCheckBox.Container = oFrame Set oCheckBox.Container = frmTest.Controls.Item("frame_1") With oCheckBox .Caption = "MonCheckBox" .Top = 240 .Left = 240 .Width = 1500 End With End With Set oFrame = Nothing End Sub
================================================================ Voilà ce que ça donne chez moi :
http://cjoint.com/?eupjwpkfnb -- Cordialement,
Jacques.
SgW wrote:
SgW wrote:
"Jacques93" a écrit :
[...]
Hélàs le
Set oCheckBox.Container = oFrame
ou le
Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection)
ne fonctionnent pas
[...]
Pas de message d'erreur autre que la fameuse boite de dialogue Debug, End
avec une Run-time Error '730' indiquant que le controle (ayant pour nom la
chaine de caractère de la .Caption) n'existe pas.
Que contient la variable oSection ?
Peux tu essayer le code suivant (simplifié) :
============================================ Private Sub LoadInterface()
Dim oFrame As VB.Frame, oCheckBox As VB.CheckBox
Set oFrame = frmTest.Controls.Add("VB.Frame", "frame_1")
Set oFrame.Container = frmTest.fQuery
oFrame.Visible = True
With oFrame
.Caption = " Ma Frame "
.Appearance = 1
.Top = 240
.Left = 240
.Width = 2000
.Height = 1500
Set oCheckBox = frmTest.Controls.Add("VB.CheckBox", "checkbox_1")
oCheckBox.Visible = True
'Set oCheckBox.Container = oFrame
Set oCheckBox.Container = frmTest.Controls.Item("frame_1")
With oCheckBox
.Caption = "MonCheckBox"
.Top = 240
.Left = 240
.Width = 1500
End With
End With
Set oFrame = Nothing
End Sub
================================================================ Voilà ce que ça donne chez moi :
Hélàs le Set oCheckBox.Container = oFrame ou le Set oCheckBox.Container = frmTest.Controls.Item("frame_" & oSection) ne fonctionnent pas
[...]
Pas de message d'erreur autre que la fameuse boite de dialogue Debug, End avec une Run-time Error '730' indiquant que le controle (ayant pour nom la chaine de caractère de la .Caption) n'existe pas.
Que contient la variable oSection ? Peux tu essayer le code suivant (simplifié) : ============================================ Private Sub LoadInterface()
Dim oFrame As VB.Frame, oCheckBox As VB.CheckBox
Set oFrame = frmTest.Controls.Add("VB.Frame", "frame_1") Set oFrame.Container = frmTest.fQuery oFrame.Visible = True With oFrame .Caption = " Ma Frame " .Appearance = 1 .Top = 240 .Left = 240 .Width = 2000 .Height = 1500
Set oCheckBox = frmTest.Controls.Add("VB.CheckBox", "checkbox_1") oCheckBox.Visible = True 'Set oCheckBox.Container = oFrame Set oCheckBox.Container = frmTest.Controls.Item("frame_1") With oCheckBox .Caption = "MonCheckBox" .Top = 240 .Left = 240 .Width = 1500 End With End With Set oFrame = Nothing End Sub
================================================================ Voilà ce que ça donne chez moi :
http://cjoint.com/?eupjwpkfnb -- Cordialement,
Jacques.
SgW
oSection est ma variable de parcours de la collection cSection
cSection est une collection contenant les labels pour mes frames