Voici le message d'erreur que j'ai quand je veux ouvrir une nouvelle fenetre
a partir de ma feuille MDI.
Au départ je suis dans ma feuille MDI : elle est créé a partir du module
suivant.
Public Module Main
Sub main()
Application.Run(New Main_SGSA)
End Sub
Sub endmain()
Application.Exit()
End Sub
End Module
Je clique sur un icone situé dans la toolbar de ma feuille MDI et voici le
code me permettant d'ouvrir ue fenetre.
Dim Frm_LgnBL As IGU_Livraisons
Frm_LgnBL = New IGU_Livraisons
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Frm_LgnBL.Show()
Mais voici le message d'erreur que j'ai :
Informations supplémentaires : Error creating window handle.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane TUET
Juste une idée comme ça, si c'est ta form MDI qui appelle ta seconde fenêtre essaies de mettre Frm_LgnBL.MdiParent = Me plutôt que Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Steph
Juste une idée comme ça, si c'est ta form MDI qui appelle ta seconde
fenêtre essaies de mettre Frm_LgnBL.MdiParent = Me plutôt que
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Juste une idée comme ça, si c'est ta form MDI qui appelle ta seconde fenêtre essaies de mettre Frm_LgnBL.MdiParent = Me plutôt que Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Steph
Fabien Bezagu
Laurent,
Je pense que ce qui ne fonctionne pas dans ton code c'est la ligne
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
ActiveForm est une méthode statique qui renvoie la fenêtre active. Rien ne me laisse penser qu'ActiveForm est une fenêtre MDI mère. Si ce code est justement dans la fenêtre MDI mère, alors pourquoi ne pas utiliser Me ?
Frm_LgnBL.MdiParent = Me
Ou si ce code est ailleurs, mon conseil est de recourrir à un singleton.
Voici le message d'erreur que j'ai quand je veux ouvrir une nouvelle fenetre a partir de ma feuille MDI. Au départ je suis dans ma feuille MDI : elle est créé a partir du module suivant. Public Module Main
Sub main() Application.Run(New Main_SGSA) End Sub
Sub endmain() Application.Exit() End Sub
End Module
Je clique sur un icone situé dans la toolbar de ma feuille MDI et voici le code me permettant d'ouvrir ue fenetre. Dim Frm_LgnBL As IGU_Livraisons Frm_LgnBL = New IGU_Livraisons Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm Frm_LgnBL.Show()
Mais voici le message d'erreur que j'ai : Informations supplémentaires : Error creating window handle.
Si vous aviez une idée ???
Laurent,
Je pense que ce qui ne fonctionne pas dans ton code c'est la ligne
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
ActiveForm est une méthode statique qui renvoie la fenêtre active. Rien ne
me laisse penser qu'ActiveForm est une fenêtre MDI mère. Si ce code est
justement dans la fenêtre MDI mère, alors pourquoi ne pas utiliser Me ?
Frm_LgnBL.MdiParent = Me
Ou si ce code est ailleurs, mon conseil est de recourrir à un singleton.
Fabien
"aitoz" <laurent9@hotmail.com> a écrit dans le message de news:
e0prqPduFHA.2880@TK2MSFTNGP12.phx.gbl...
Voici le message d'erreur que j'ai quand je veux ouvrir une nouvelle
fenetre a partir de ma feuille MDI.
Au départ je suis dans ma feuille MDI : elle est créé a partir du module
suivant.
Public Module Main
Sub main()
Application.Run(New Main_SGSA)
End Sub
Sub endmain()
Application.Exit()
End Sub
End Module
Je clique sur un icone situé dans la toolbar de ma feuille MDI et voici le
code me permettant d'ouvrir ue fenetre.
Dim Frm_LgnBL As IGU_Livraisons
Frm_LgnBL = New IGU_Livraisons
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Frm_LgnBL.Show()
Mais voici le message d'erreur que j'ai :
Informations supplémentaires : Error creating window handle.
Je pense que ce qui ne fonctionne pas dans ton code c'est la ligne
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
ActiveForm est une méthode statique qui renvoie la fenêtre active. Rien ne me laisse penser qu'ActiveForm est une fenêtre MDI mère. Si ce code est justement dans la fenêtre MDI mère, alors pourquoi ne pas utiliser Me ?
Frm_LgnBL.MdiParent = Me
Ou si ce code est ailleurs, mon conseil est de recourrir à un singleton.
Voici le message d'erreur que j'ai quand je veux ouvrir une nouvelle fenetre a partir de ma feuille MDI. Au départ je suis dans ma feuille MDI : elle est créé a partir du module suivant. Public Module Main
Sub main() Application.Run(New Main_SGSA) End Sub
Sub endmain() Application.Exit() End Sub
End Module
Je clique sur un icone situé dans la toolbar de ma feuille MDI et voici le code me permettant d'ouvrir ue fenetre. Dim Frm_LgnBL As IGU_Livraisons Frm_LgnBL = New IGU_Livraisons Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm Frm_LgnBL.Show()
Mais voici le message d'erreur que j'ai : Informations supplémentaires : Error creating window handle.
Si vous aviez une idée ???
aitoz
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux. Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une fenetre ou j'ai un récapitulatif des commandes d'achat. Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis : Frm_LgnBL.MdiParent = Me et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre : Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form. Alors j'avais un message d'erreur. Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la manière d'ouvrir et de fermer l'application en créant mon module.
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux.
Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une
fenetre ou j'ai un récapitulatif des commandes d'achat.
Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande
d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis :
Frm_LgnBL.MdiParent = Me
et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre :
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form.
Alors j'avais un message d'erreur.
Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce
message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la
manière d'ouvrir et de fermer l'application en créant mon module.
En réalité j'ai 3 niveaux. Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une fenetre ou j'ai un récapitulatif des commandes d'achat. Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis : Frm_LgnBL.MdiParent = Me et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre : Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form. Alors j'avais un message d'erreur. Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la manière d'ouvrir et de fermer l'application en créant mon module.
Stephane TUET
Dans ce cas ce n'est pas Me mais Me.MDIParent
Steph
"aitoz" a écrit dans le message de news: OFz$
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux. Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une fenetre ou j'ai un récapitulatif des commandes d'achat. Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis : Frm_LgnBL.MdiParent = Me et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre : Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form. Alors j'avais un message d'erreur. Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la manière d'ouvrir et de fermer l'application en créant mon module.
Dans ce cas ce n'est pas Me mais Me.MDIParent
Steph
"aitoz" <laurent9@hotmail.com> a écrit dans le message de news:
OFz$bpduFHA.3740@TK2MSFTNGP14.phx.gbl...
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux.
Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une
fenetre ou j'ai un récapitulatif des commandes d'achat.
Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande
d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis :
Frm_LgnBL.MdiParent = Me
et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre :
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form.
Alors j'avais un message d'erreur.
Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche
ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer
la manière d'ouvrir et de fermer l'application en créant mon module.
En réalité j'ai 3 niveaux. Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une fenetre ou j'ai un récapitulatif des commandes d'achat. Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis : Frm_LgnBL.MdiParent = Me et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre : Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form. Alors j'avais un message d'erreur. Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la manière d'ouvrir et de fermer l'application en créant mon module.
Fabien Bezagu
En fait j'ai déjà envisagé et donné la solution : un singleton.
Si tu ne connais pas ce design pattern, je t'explique rapidement : le but est de contraindre une classe à n'avoir qu'une seule instance (ce qui est le cas de ta MainForm).
Voici un exemple d'une classe implémentant ce design pattern :
Public Class Singleton
Private Sub New() End Sub
Private Shared _instance As Singleton
Public Shared ReadOnly Property Instance() As Singleton Get If _instance Is Nothing Then _instance = New Singleton End If Return _instance End Get End Property
Public Sub UneMethode() End Sub End Class
Puis, quelque part dans ton programme, tu peux invoquer la méthode de l'instance unique :
Singleton.Instance.UneMethode()
Le fait de mettre le constructeur private permet d'éviter un accident en instanciant un autre objet ailleurs dans ton programme...
T'as plus qu'à adpater légèrement pour la MDI mère ! :-)
Fabien
"aitoz" a écrit dans le message de news: OFz$
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux. Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une fenetre ou j'ai un récapitulatif des commandes d'achat. Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis : Frm_LgnBL.MdiParent = Me et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre : Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form. Alors j'avais un message d'erreur. Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la manière d'ouvrir et de fermer l'application en créant mon module.
En fait j'ai déjà envisagé et donné la solution : un singleton.
Si tu ne connais pas ce design pattern, je t'explique rapidement : le but
est de contraindre une classe à n'avoir qu'une seule instance (ce qui est le
cas de ta MainForm).
Voici un exemple d'une classe implémentant ce design pattern :
Public Class Singleton
Private Sub New()
End Sub
Private Shared _instance As Singleton
Public Shared ReadOnly Property Instance() As Singleton
Get
If _instance Is Nothing Then
_instance = New Singleton
End If
Return _instance
End Get
End Property
Public Sub UneMethode()
End Sub
End Class
Puis, quelque part dans ton programme, tu peux invoquer la méthode de
l'instance unique :
Singleton.Instance.UneMethode()
Le fait de mettre le constructeur private permet d'éviter un accident en
instanciant un autre objet ailleurs dans ton programme...
T'as plus qu'à adpater légèrement pour la MDI mère ! :-)
Fabien
"aitoz" <laurent9@hotmail.com> a écrit dans le message de news:
OFz$bpduFHA.3740@TK2MSFTNGP14.phx.gbl...
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux.
Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une
fenetre ou j'ai un récapitulatif des commandes d'achat.
Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande
d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis :
Frm_LgnBL.MdiParent = Me
et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre :
Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form.
Alors j'avais un message d'erreur.
Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche
ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer
la manière d'ouvrir et de fermer l'application en créant mon module.
En fait j'ai déjà envisagé et donné la solution : un singleton.
Si tu ne connais pas ce design pattern, je t'explique rapidement : le but est de contraindre une classe à n'avoir qu'une seule instance (ce qui est le cas de ta MainForm).
Voici un exemple d'une classe implémentant ce design pattern :
Public Class Singleton
Private Sub New() End Sub
Private Shared _instance As Singleton
Public Shared ReadOnly Property Instance() As Singleton Get If _instance Is Nothing Then _instance = New Singleton End If Return _instance End Get End Property
Public Sub UneMethode() End Sub End Class
Puis, quelque part dans ton programme, tu peux invoquer la méthode de l'instance unique :
Singleton.Instance.UneMethode()
Le fait de mettre le constructeur private permet d'éviter un accident en instanciant un autre objet ailleurs dans ton programme...
T'as plus qu'à adpater légèrement pour la MDI mère ! :-)
Fabien
"aitoz" a écrit dans le message de news: OFz$
En fait je ne vous ai pas tout dis ! lol
En réalité j'ai 3 niveaux. Je pars de ma fenetre MDI, je clique sur mon icone pour accéder a une fenetre ou j'ai un récapitulatif des commandes d'achat. Et ensuite j'ai un deuxieme niveau ou je clique sur une ligne de commande d'achat pour voir le détail de la commande d'achat.
Entre la feuille MDI et la première fenetre j'ai mis : Frm_LgnBL.MdiParent = Me et ca fonctionne tres bien.
Par contre au deuxieme niveau j'ai été obligé de mettre : Frm_LgnBL.MdiParent = Main_SGSA.ActiveForm
Parce que du coup la feuille ME n'est plus la MDI form. Alors j'avais un message d'erreur. Le pire c'est que ca a fonctionné tres bien mais depuis hier il m'affiche ce message d'erreur.
Si vous aviez une idée ? et la seule chose que j'ai fais c'est de changer la manière d'ouvrir et de fermer l'application en créant mon module.
aitoz
Merci beaucoup pour toute votre aide !!! Je m'y mets.
Bonne journée à tous.
Merci beaucoup pour toute votre aide !!!
Je m'y mets.
Alors je ne sais pas pourquoi vraiment ca marche mieux maintenant ! Mais bon, ca fonctionne.
Si quelqu'un a une idée ??? bonne journée
Fabien Bezagu
Oui c'est logique puisque la forme active est une fille MDI de la fenêtre MDI mère. Ca revient à ce que suggérait Stéphane : Me.MdiParent.
Par contre, si jamais la fenêtre active est en dehors du cadre MDI, ça ne marchera pas...Donc danger. La solution du singleton marchera toujours, elle.
Fabien
"aitoz" a écrit dans le message de news:
Je suis incapable de dire vraiment pourquoi ! mais j'ai trouvé l'instruction qui fait tout marcher correctement.
Alors je ne sais pas pourquoi vraiment ca marche mieux maintenant ! Mais bon, ca fonctionne.
Si quelqu'un a une idée ??? bonne journée
Oui c'est logique puisque la forme active est une fille MDI de la fenêtre
MDI mère. Ca revient à ce que suggérait Stéphane : Me.MdiParent.
Par contre, si jamais la fenêtre active est en dehors du cadre MDI, ça ne
marchera pas...Donc danger. La solution du singleton marchera toujours,
elle.
Fabien
"aitoz" <laurent9@hotmail.com> a écrit dans le message de news:
en3QrpeuFHA.2540@TK2MSFTNGP09.phx.gbl...
Je suis incapable de dire vraiment pourquoi ! mais j'ai trouvé
l'instruction qui fait tout marcher correctement.
Oui c'est logique puisque la forme active est une fille MDI de la fenêtre MDI mère. Ca revient à ce que suggérait Stéphane : Me.MdiParent.
Par contre, si jamais la fenêtre active est en dehors du cadre MDI, ça ne marchera pas...Donc danger. La solution du singleton marchera toujours, elle.
Fabien
"aitoz" a écrit dans le message de news:
Je suis incapable de dire vraiment pourquoi ! mais j'ai trouvé l'instruction qui fait tout marcher correctement.