Bonjour A Tous, Programmeurs du Dimanche,
Je veux Créer et Afficher une fenêtre secondaire à l'aide d'un Bouton.
j'y arrive avec OpenWidow.
Je la ferme avec CloseWindow activé avec un Bouton dans la fenêtre Secondaire.
Mais ensuite je ne peux l'ouvrir à nouveau.
Puis-je placer les Id Gadget de cette nouvelle fenêtre au même endroit que ceux de la fenêtre principale, dans les mêmes Enumérations ?
Puis-je utiliser la même zone EventWindows ou en créer une dans la Procédure NouvelleFenetre?
Merci,
JM
Gestion d'une Nouvelle fenêtre
Gestion d'une Nouvelle fenêtre
Dernière modification par Jeanmarc le dim. 14/août/2016 16:19, modifié 1 fois.
Re: Gestion d'une Nouvelle fenêtre
Salut,
une regle de base a connaitre,
si tu veux qu'on t'aide, faut poster ton code
comme ça , sans rien voir, personne ne pourra repondre !
comment veut tu qu'on devine si tu a fait une erreur quelque part ?
en pb tu peut tout faire ...
deux fenetre independantes avec chacune leur boucle d'event
deux fenetre liées (mais separées) , avec une seule boucle d'event
meme une fenetre mere, et sa fenetre fille (inclue dans la premiere )
bref, le choix est vaste
une regle de base a connaitre,
si tu veux qu'on t'aide, faut poster ton code
comme ça , sans rien voir, personne ne pourra repondre !

comment veut tu qu'on devine si tu a fait une erreur quelque part ?
en pb tu peut tout faire ...
deux fenetre independantes avec chacune leur boucle d'event
deux fenetre liées (mais separées) , avec une seule boucle d'event
meme une fenetre mere, et sa fenetre fille (inclue dans la premiere )
bref, le choix est vaste
Re: Gestion d'une Nouvelle fenêtre
Si je ne me trompe ? quand on utilise CloseWindow() on libère toutes les ressources associées, donc pour rouvrir la même fenêtre, tu relances simplement toute la procédure qui a lancée la fenêtre secondaire.
Comme a dit Zorro, un bout de code est nécessaire, tu fais peut-être une simple erreur de conception.

Comme a dit Zorro, un bout de code est nécessaire, tu fais peut-être une simple erreur de conception.

Re: Gestion d'une Nouvelle fenêtre
Si a un moment donnée tu as tes 2 fenêtres d'ouvertes, tu ne peux pas utiliser les mêmes énumérations, ça parait logique.
Par contre, pour gérer tes coordonnées, tu peux trés bien utiliser les mêmes données.
Autant utiliser une structure pour cela.
Par contre, pour gérer tes coordonnées, tu peux trés bien utiliser les mêmes données.
Autant utiliser une structure pour cela.
Code : Tout sélectionner
Enumeration Fenetres
#Fenetre1
#Fenetre2
EndEnumeration
Enumeration Gadgets
#CanvasFenetre1
#CanvasFenetre2
EndEnumeration
Structure Coo
X.i
Y.i
L.i
H.i
EndStructure
Gad.Coo\X = 10
Gad.Coo\Y = 10
Gad.Coo\L = 280
Gad.Coo\H = 580
Procedure OuvrirFenetre1()
OpenWindow(#Fenetre1, 300, 10, 300, 600, "Fenetre 1", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
CanvasGadget(#CanvasFenetre1,Gad.Coo\X, Gad.Coo\Y, Gad.Coo\L, Gad.Coo\H)
ProcedureReturn 1
EndProcedure
Procedure OuvrirFenetre2()
OpenWindow(#Fenetre2, 300, 10, 300, 600, "Fenetre 2", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
CanvasGadget(#CanvasFenetre2,Gad.Coo\X, Gad.Coo\Y, Gad.Coo\L, Gad.Coo\H)
ProcedureReturn 1
EndProcedure
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Gestion d'une Nouvelle fenêtre
Code : Tout sélectionner
Enumeration
#Main
#Fenetre1
#Fenetre2
#Fenetre3
#Fenetre4
#Fenetre5
EndEnumeration
Enumeration
#Bouton1
#Bouton2
#Bouton3
#Bouton4
#Bouton5
#BoutonFenetre1
#BoutonFenetre2
#BoutonFenetre3
#BoutonFenetre4
#BoutonFenetre5
#Text
EndEnumeration
Procedure OpenWin_Main()
If OpenWindow(#Main, 0, 0, 220, 200, "Fenetres", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ButtonGadget(#Bouton1, 10, 10, 200, 20, "Ouvrir fenêtre 1")
ButtonGadget(#Bouton2, 10, 40, 200, 20, "Ouvrir fenêtre 2")
ButtonGadget(#Bouton3, 10, 70, 200, 20, "Ouvrir fenêtre 3")
ButtonGadget(#Bouton4, 10, 100, 200, 20, "Ouvrir fenêtre 4")
ButtonGadget(#Bouton5, 10, 130, 200, 20, "Ouvrir fenêtre 5")
TextGadget(#Text, 10, 180, 200, 20, "Pas de fenêtre ouverte", #PB_Text_Center)
EndIf
EndProcedure
Procedure OpenWin_1()
If OpenWindow(#Fenetre1, 0, 0, 220, 40, "Fenetre 1", #PB_Window_SystemMenu, WindowID(#Main))
ButtonGadget(#BoutonFenetre1, 10, 10, 200, 20, "Fermer fenêtre 1")
ProcedureReturn #True
EndIf
EndProcedure
Procedure OpenWin_2()
If OpenWindow(#Fenetre2, 0, 70, 220, 40, "Fenetre 2", #PB_Window_SystemMenu, WindowID(#Main))
ButtonGadget(#BoutonFenetre2, 10, 10, 200, 20, "Fermer fenêtre 2")
ProcedureReturn #True
EndIf
EndProcedure
Procedure OpenWin_3()
If OpenWindow(#Fenetre3, 0, 140, 220, 40, "Fenetre 3", #PB_Window_SystemMenu, WindowID(#Main))
ButtonGadget(#BoutonFenetre3, 10, 10, 200, 20, "Fermer fenêtre 3")
ProcedureReturn #True
EndIf
EndProcedure
Procedure OpenWin_4()
If OpenWindow(#Fenetre4, 0, 210, 220, 40, "Fenetre 4", #PB_Window_SystemMenu, WindowID(#Main))
ButtonGadget(#BoutonFenetre4, 10, 10, 200, 20, "Fermer fenêtre 4")
ProcedureReturn #True
EndIf
EndProcedure
Procedure OpenWin_5()
If OpenWindow(#Fenetre5, 0, 280, 220, 40, "Fenetre 5", #PB_Window_SystemMenu, WindowID(#Main))
ButtonGadget(#BoutonFenetre5, 10, 10, 200, 20, "Fermer fenêtre 5")
ProcedureReturn #True
EndIf
EndProcedure
OpenWin_Main()
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
;/ Ouverture des fenêtres "fille"
Case #Bouton1
If OpenWin_1()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 1")
EndIf
Case #Bouton2
If OpenWin_2()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 2")
EndIf
Case #Bouton3
If OpenWin_3()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 3")
EndIf
Case #Bouton4
If OpenWin_4()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 4")
EndIf
Case #Bouton5
If OpenWin_5()
SetGadgetText(#Text, "Vous avez ouvert la fenêtre 5")
EndIf
;/ Femeture des fenêtres "fille" par le bouton
Case #BoutonFenetre1
SetGadgetText(#Text, "Vous avez fermé la fenêtre 1")
CloseWindow(#Fenetre1)
Case #BoutonFenetre2
SetGadgetText(#Text, "Vous avez fermé la fenêtre 2")
CloseWindow(#Fenetre2)
Case #BoutonFenetre3
SetGadgetText(#Text, "Vous avez fermé la fenêtre 3")
CloseWindow(#Fenetre3)
Case #BoutonFenetre4
SetGadgetText(#Text, "Vous avez fermé la fenêtre 4")
CloseWindow(#Fenetre4)
Case #BoutonFenetre5
SetGadgetText(#Text, "Vous avez fermé la fenêtre 5")
CloseWindow(#Fenetre5)
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
;/ Fermeture des fenêtres "fille" par l'icône [X]
Case #Fenetre1
SetGadgetText(#Text, "Vous avez fermé la fenêtre 1")
CloseWindow(#Fenetre1)
Case #Fenetre2
SetGadgetText(#Text, "Vous avez fermé la fenêtre 2")
CloseWindow(#Fenetre2)
Case #Fenetre3
SetGadgetText(#Text, "Vous avez fermé la fenêtre 3")
CloseWindow(#Fenetre3)
Case #Fenetre4
SetGadgetText(#Text, "Vous avez fermé la fenêtre 4")
CloseWindow(#Fenetre4)
Case #Fenetre5
SetGadgetText(#Text, "Vous avez fermé la fenêtre 5")
CloseWindow(#Fenetre5)
;/ Fermeture de la fenêtre principale (et fin du programme)
Case #Main
Quit = #True
EndSelect
EndSelect
Until Quit
End
- falsam
- Messages : 7317
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Gestion d'une Nouvelle fenêtre
Inutile de balancer des codes tant que Jeanmarc n'a pas donné plus d'information sur sa demande.Zorro a écrit :une regle de base a connaitre, si tu veux qu'on t'aide, faut poster ton code
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Gestion d'une Nouvelle fenêtre
Merci et mille excuses pour le temps à vous répondre,
J'ai fait une réponse mais je ne l’ai pas envoyé ou cru l'envoyer.
Je voudrais bien vous envoyer mon code mais il me faut le simplifier car je ne veux pas vous faire perdre votre temps à le décortiquer (+1100 lignes).
En fait tous les Gadgets créés dans la procédure de la seconde fenêtre n'étaient pas reconnus à l’exécution.
En voulant le simplifier pour vous, ce code s'est mis à fonctionner. J'ai corrigé l'erreur sans savoir comment, les gadgets sont les mêmes, seule leur position dans les Enumérations a changé.
JM
J'ai fait une réponse mais je ne l’ai pas envoyé ou cru l'envoyer.
Je voudrais bien vous envoyer mon code mais il me faut le simplifier car je ne veux pas vous faire perdre votre temps à le décortiquer (+1100 lignes).
En fait tous les Gadgets créés dans la procédure de la seconde fenêtre n'étaient pas reconnus à l’exécution.
En voulant le simplifier pour vous, ce code s'est mis à fonctionner. J'ai corrigé l'erreur sans savoir comment, les gadgets sont les mêmes, seule leur position dans les Enumérations a changé.
JM