Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Bonsoir à tous
J'ai une fenêtre principale qui contient un menu, par exemple:
menu1 : table des clients
menu2 : table des produits
menu3 : table des fournisseurs
Quand je clique sur le menu1, la fenêtre s'affiche mais quand je la réduis (à l'aide du tiret réduire en haut à droite de la fenêtre), et que je choisis un autre menu (menu2 par exemple), la fenêtre menu2 ne s'affiche pas (aucune autre fenêtre ne s'affiche).
Y a t-il un moyen de résoudre ce problème?
Merci
J'ai une fenêtre principale qui contient un menu, par exemple:
menu1 : table des clients
menu2 : table des produits
menu3 : table des fournisseurs
Quand je clique sur le menu1, la fenêtre s'affiche mais quand je la réduis (à l'aide du tiret réduire en haut à droite de la fenêtre), et que je choisis un autre menu (menu2 par exemple), la fenêtre menu2 ne s'affiche pas (aucune autre fenêtre ne s'affiche).
Y a t-il un moyen de résoudre ce problème?
Merci
Win7 (x64) 64 bits Pb 5.72
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Sans code difficile de te répondre.
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Pourtant c'est très clair, voici quand même un code exemple:
Merci de m'éclairer
Code : Tout sélectionner
Enumeration
#WinMenu
#WinMenu1
#WinMenu2
EndEnumeration
Global ExitMenu,ExitMenu1,ExitMenu2
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu1()
ExitMenu1=0
OpenWindow(#WinMenu1, 0,0,400,400, "Menu 1", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu1,RGB(135, 206, 250))
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
ExitMenu1=1
EndIf
Until ExitMenu1=1
CloseWindow(#WinMenu1)
EndProcedure
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu2()
ExitMenu2=0
ExamineDesktops()
OpenWindow(#WinMenu2, 0,0,0,0, "Menu 2", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu2,RGB(255, 0, 255))
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
ExitMenu2=1
EndIf
Until ExitMenu2=1
CloseWindow(#WinMenu2)
EndProcedure
;---------------------------------------------------------------------------------------------------------------------------------------
exitMenu=0
ExamineDesktops()
OpenWindow(#WinMenu, 0,0, 800, 500, "Test fenêtres",#PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu,RGB(255, 165, 0))
If CreateMenu(0, WindowID(#WinMenu))
MenuTitle("Menu")
MenuItem( 01, "Menu 1")
MenuItem( 02, "Menu 2")
MenuItem( 03, "Quitter")
EndIf
exitMenu=0
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
CloseWindow(#WinMenu)
exitMenu=1
EndIf
If EventId=#PB_Event_Menu
Select EventMenu()
Case 1
Run_Menu1()
Case 2
Run_Menu2()
Case 3
exitmenu=1
EndSelect
EndIf
Until exitMenu=1
End
Win7 (x64) 64 bits Pb 5.72
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
bonjour, c'est un problème de conception de ton programme.
lorsque tu ouvre ta fenêtre 'menu1 ou 2' tu gère son contenu dans une boucle
mais du coup tu ne gère plus du tout le menu de la première fenêtre boucle principale
ouvrir un item du menu principal ne sert donc a rien et n'a pas d'effet.
une façon de proceder
lorsque tu ouvre ta fenêtre 'menu1 ou 2' tu gère son contenu dans une boucle
Code : Tout sélectionner
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
ExitMenu2=1
EndIf
Until ExitMenu1=1
ouvrir un item du menu principal ne sert donc a rien et n'a pas d'effet.
une façon de proceder
Code : Tout sélectionner
Enumeration
#WinMenu
#WinMenu1
#WinMenu2
EndEnumeration
Global ExitMenu,ExitMenu1,ExitMenu2
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu1()
ExitMenu1=0
OpenWindow(#WinMenu1, 0,0,400,400, "Menu 1", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu1,RGB(135, 206, 250))
; Repeat
; EventId=WaitWindowEvent()
; If EventID = #PB_Event_CloseWindow
; ExitMenu1=1
; EndIf
;
; Until ExitMenu1=1
; CloseWindow(#WinMenu1)
EndProcedure
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu2()
ExitMenu2=0
ExamineDesktops()
OpenWindow(#WinMenu2, 0,0,0,0, "Menu 2", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu2,RGB(255, 0, 255))
; Repeat
; EventId=WaitWindowEvent()
; If EventID = #PB_Event_CloseWindow
; ExitMenu2=1
; EndIf
;
; Until ExitMenu2=1
; CloseWindow(#WinMenu2)
EndProcedure
;---------------------------------------------------------------------------------------------------------------------------------------
exitMenu=0
ExamineDesktops()
OpenWindow(#WinMenu, 0,0, 800, 500, "Test fenêtres",#PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu,RGB(255, 165, 0))
If CreateMenu(0, WindowID(#WinMenu))
MenuTitle("Menu")
MenuItem( 01, "Menu 1")
MenuItem( 02, "Menu 2")
MenuItem( 03, "Quitter")
EndIf
exitMenu=0
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
If EventWindow()=#WinMenu; si on ferme la fenetre principale
CloseWindow(#WinMenu)
exitMenu=1
EndIf
If EventWindow()=#WinMenu1 ; si on ferme la fenetre menu1
CloseWindow(#WinMenu1) ; on ferme la fenetre
EndIf
If EventWindow()=#WinMenu2; si on ferme la fenetre menu2
CloseWindow(#WinMenu2)
EndIf
EndIf
If EventId=#PB_Event_Menu ; gestion des entrées du menu
Select EventMenu()
Case 1
If menu1=0 ;si on choisis menu1
If IsWindow(#WinMenu1)=0 ; et que la fenetre n'est pas ouverte
Run_Menu1()
Else ;si elle est ouverte on la passe en normal au cas ou elle est minimisée
SetWindowState(#WinMenu1,#PB_Window_Normal )
EndIf
EndIf
Case 2
If menu1=0
If IsWindow(#WinMenu2)=0 ; si on choisis menu2 et que la fenetre n'est pas ouverte
Run_Menu2()
Else ;si elle est ouverte on la passe en normal au cas ou elle est minimisée
SetWindowState(#WinMenu2,#PB_Window_Normal )
EndIf
EndIf
Case 3
exitmenu=1
EndSelect
EndIf
Until exitMenu=1
End
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Ok Case a tout dit
Merci Case
Merci Case
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
ça fonctionne !
Merci Case et bonne continuation
Merci Case et bonne continuation
Win7 (x64) 64 bits Pb 5.72
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Non, ça ne marche plus car il y a un détail que je n'ai pas remarqué au début. Donc, le problème existe toujours. Je reprends le code proposé par Case (mais en activant les lignes évènements des 2 fenêtres windows:
Voilà, une fois ces lignes activées, ça ne marche plus...
la question reste donc toujours posée
merci de votre aide
Code : Tout sélectionner
Enumeration
#WinMenu
#WinMenu1
#WinMenu2
EndEnumeration
Global ExitMenu,ExitMenu1,ExitMenu2
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu1()
ExitMenu1=0
OpenWindow(#WinMenu1, 0,0,400,400, "Menu 1", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu1,RGB(135, 206, 250))
;ci-dessous les lignes réactivées
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
ExitMenu1=1
EndIf
;
Until ExitMenu1=1
CloseWindow(#WinMenu1)
EndProcedure
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu2()
ExitMenu2=0
ExamineDesktops()
OpenWindow(#WinMenu2, 0,0,0,0, "Menu 2", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu2,RGB(255, 0, 255))
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
ExitMenu2=1
EndIf
;
Until ExitMenu2=1
CloseWindow(#WinMenu2)
EndProcedure
;---------------------------------------------------------------------------------------------------------------------------------------
exitMenu=0
ExamineDesktops()
OpenWindow(#WinMenu, 0,0, 800, 500, "Test fenêtres",#PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu,RGB(255, 165, 0))
If CreateMenu(0, WindowID(#WinMenu))
MenuTitle("Menu")
MenuItem( 01, "Menu 1")
MenuItem( 02, "Menu 2")
MenuItem( 03, "Quitter")
EndIf
exitMenu=0
Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
If EventWindow()=#WinMenu; si on ferme la fenetre principale
CloseWindow(#WinMenu)
exitMenu=1
EndIf
If EventWindow()=#WinMenu1 ; si on ferme la fenetre menu1
CloseWindow(#WinMenu1) ; on ferme la fenetre
EndIf
If EventWindow()=#WinMenu2; si on ferme la fenetre menu2
CloseWindow(#WinMenu2)
EndIf
EndIf
If EventId=#PB_Event_Menu ; gestion des entrées du menu
Select EventMenu()
Case 1
If menu1=0 ;si on choisis menu1
If IsWindow(#WinMenu1)=0 ; et que la fenetre n'est pas ouverte
Run_Menu1()
Else ;si elle est ouverte on la passe en normal au cas ou elle est minimisée
SetWindowState(#WinMenu1,#PB_Window_Normal )
EndIf
EndIf
Case 2
If menu1=0
If IsWindow(#WinMenu2)=0 ; si on choisis menu2 et que la fenetre n'est pas ouverte
Run_Menu2()
Else ;si elle est ouverte on la passe en normal au cas ou elle est minimisée
SetWindowState(#WinMenu2,#PB_Window_Normal )
EndIf
EndIf
Case 3
exitmenu=1
EndSelect
EndIf
Until exitMenu=1
En
la question reste donc toujours posée
merci de votre aide
Win7 (x64) 64 bits Pb 5.72
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
forcement si tu remet en place le principal problème, a savoir des boucles dans tes procédures
ou tu ne gère plus le menu de ta fenêtre principale ou des autres fenetre potentiellement ouvertes
ça ne peux que ne pas fonctionner.
ou tu ne gère plus le menu de ta fenêtre principale ou des autres fenetre potentiellement ouvertes
ça ne peux que ne pas fonctionner.
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
il faut que tu comprenne que ton programme s’exécute ligne par ligne et que
lorsque tu es dans une boucle le programme retourne au début de la boucle quand il arrive a la fin .
voila un pseudo code grossierement basé sur ton programe
quand tu es dans le programme principal dans ta boucle principale tu indique au programme que si tu vas dans menu1 tu saute a menu 1
et si tu clic dans menu2 tu saute dans menu2
mais si tu clic dans menu1 quand tu es dans menu 1 tu vas rester dans la boucle 1 tout le temps tu ne retourne jamais dans la boucle principale
donc quand tu clic sur menu 2 tu es toujours dans la boule menu 1 ou rien ne dit a ton programme d'ouvrir menu 2
en procédant comme tu le fait il faudrait que tu aie dans chacune des boucles la gestion de tout le menu/gadgets de toute tes fenêtres ouvertes pour pouvoir gérer leur fonctionnement. tu imagine certainement que cela alourdirait énormément ton code, tout le code des fenêtres dans toute les procédures des fenêtres.
voici une manière de procéder , il y en a plusieurs mais je suis reste au plus prêt de ce que tu avais pensé faire a savoir une procédure par fenêtres.
lorsque tu es dans une boucle le programme retourne au début de la boucle quand il arrive a la fin .
voila un pseudo code grossierement basé sur ton programe
Code : Tout sélectionner
---
boucle principale
clic menu 1 ---> menu 1
clic menu 2 ---> menu 2
fin boucle principale
---
menu 1
ouvre fenetre 1
boucle menu 1
fin boucle menu 1
---
menu 2
ouvre fenetre 2
boucle menu 2
fin boucle menu 2
et si tu clic dans menu2 tu saute dans menu2
mais si tu clic dans menu1 quand tu es dans menu 1 tu vas rester dans la boucle 1 tout le temps tu ne retourne jamais dans la boucle principale
donc quand tu clic sur menu 2 tu es toujours dans la boule menu 1 ou rien ne dit a ton programme d'ouvrir menu 2
en procédant comme tu le fait il faudrait que tu aie dans chacune des boucles la gestion de tout le menu/gadgets de toute tes fenêtres ouvertes pour pouvoir gérer leur fonctionnement. tu imagine certainement que cela alourdirait énormément ton code, tout le code des fenêtres dans toute les procédures des fenêtres.
voici une manière de procéder , il y en a plusieurs mais je suis reste au plus prêt de ce que tu avais pensé faire a savoir une procédure par fenêtres.
Code : Tout sélectionner
Enumeration
#WinMenu
#WinMenu1
#WinMenu2
#okbutton1 ; bouton OK dans la fgentre 1
#dohbutton1; bonton doh dans la fenetre 1
#okbutton2 ; bouton OK dans la fgentre 2
#dohbutton2; bonton doh dans la fenetre 2
EndEnumeration
Global ExitMenu
Procedure createwin1() ; crée la fenetre menu 1 avec tout ses gadgets
OpenWindow(#WinMenu1, 0,0,400,400, "Menu 1", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu1,RGB(135, 206, 250))
ButtonGadget(#okbutton1,0,0,120,20,"ok")
ButtonGadget(#dohbutton1,0,20,120,20,"Doh")
EndProcedure
Procedure createwin2(); crée la fenetre menu 1 avec tout ses gadgets
OpenWindow(#WinMenu2, 0,0,250,100, "Menu 2", #PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu2,RGB(255, 0, 255))
ButtonGadget(#okbutton2,0,20,120,20,"ok")
ButtonGadget(#dohbutton2,0,0,120,20,"Doh")
EndProcedure
Procedure Event_main(EventId)
; ici la gestion de la fenetre principale
;sans boucle
If EventID = #PB_Event_CloseWindow
CloseWindow(#WinMenu)
exitMenu=1
EndIf
If eventid=#PB_Event_MoveWindow
Debug "la fenetre principale a bougé"
EndIf
If EventId=#PB_Event_Menu ; gestion des entrées du menu
Select EventMenu()
Case 1
If menu1=0 ;si on choisis menu1
If IsWindow(#WinMenu1)=0 ; et que la fenetre n'est pas ouverte
createwin1()
Else ;si elle est ouverte on la passe en normal au cas ou elle est minimisée
SetWindowState(#WinMenu1,#PB_Window_Normal )
EndIf
EndIf
Case 2
If menu1=0
If IsWindow(#WinMenu2)=0 ; si on choisis menu2 et que la fenetre n'est pas ouverte
createwin2()
Else ;si elle est ouverte on la passe en normal au cas ou elle est minimisée
SetWindowState(#WinMenu2,#PB_Window_Normal )
EndIf
EndIf
Case 3
exitmenu=1
EndSelect
EndIf
EndProcedure
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu1(EventId)
; ici la gestion de la fenetre menu1
; sans boucle
If eventid=#PB_Event_MoveWindow
Debug "la fenetre 1 a bougé"
EndIf
If EventID = #PB_Event_CloseWindow
CloseWindow(#WinMenu1) ; on ferme la fenetre
EndIf
If EventId=#PB_Event_Gadget
If EventGadget()=#okbutton1
Debug "OK #1"
EndIf
If EventGadget()=#dohbutton1
Debug "Doh!!! #1"
EndIf
EndIf
EndProcedure
;--------------------------------------------------------------------------------------------------------
Procedure Run_Menu2(eventid)
; ici la gestion de la fenetre menu2
; sans boucle
If eventid=#PB_Event_MoveWindow
Debug "la fenetre 2 a bougé"
EndIf
If EventID = #PB_Event_CloseWindow
CloseWindow(#WinMenu2) ; on ferme la fenetre
EndIf
If EventId=#PB_Event_Gadget
If EventGadget()=#okbutton2
Debug "OK #2"
EndIf
If EventGadget()=#dohbutton2
Debug "Doh!!! #2"
EndIf
EndIf
EndProcedure
;---------------------------------------------------------------------------------------------------------------------------------------
exitMenu=0
ExamineDesktops()
OpenWindow(#WinMenu, 0,0, 800, 500, "Test fenêtres",#PB_Window_SystemMenu |#PB_Window_ScreenCentered | #PB_Window_TitleBar |#PB_Window_MaximizeGadget|#PB_Window_MinimizeGadget)
SetWindowColor(#WinMenu,RGB(255, 165, 0))
If CreateMenu(0, WindowID(#WinMenu))
MenuTitle("Menu")
MenuItem( 01, "Menu 1")
MenuItem( 02, "Menu 2")
MenuItem( 03, "Quitter")
EndIf
exitMenu=0
Repeat
EventId=WaitWindowEvent()
If EventId
If EventWindow()= #WinMenu1
Run_Menu1(EventId)
EndIf
If EventWindow()= #WinMenu2
Run_Menu2(EventId)
EndIf
If EventWindow()=#winmenu
Event_main(eventid)
EndIf
EndIf
Until exitMenu=1
End
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Merci beaucoup Case, je vais tester...
Win7 (x64) 64 bits Pb 5.72
Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère
Je me demande si tu ne cherches pas à utiliser le gadget MDI, en fait, comme ça:
Mesa.
Code : Tout sélectionner
Enumeration fenetre
#FenetrePrincipale
#Fenetremenu1_table_des_clients
#Fenetremenu2_table_des_produits
#Fenetremenu3_table_des_fournisseurs
EndEnumeration
Enumeration Menu
#Menu_tables = 100
#Menu_table_des_clients
#Menu_table_des_produits
#Menu_table_des_fournisseurs
#Menu_Cascade ;: Ré-organise LES fenêtres filles sous forme de cascade.
#Menu_TileVertically ;: Ré-organise LES fenêtres filles sous forme de mosaïque verticale.
#Menu_TileHorizontally;: Ré-organise LES fenêtres filles sous forme de mosaïque horizontale.
#Menu_Next ;: Active la fenêtre fille suivante.
#Menu_Previous ;: Active la fenêtre fille précédente.
#Menu_Arrange ;: Ré-organise les fenêtres filles qui sont réduites.
#Menu_ToutFermer
EndEnumeration
Enumeration Gadgets
#MDIGadget
#ListeCLient
#ListeProduits
#ListeFournisseurs
EndEnumeration
Declare CreateFenetreFournisseurs()
If OpenWindow(#FenetrePrincipale, 0, 0, 800, 600, "MDIGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget | #PB_Window_MaximizeGadget)
If CreateMenu(#Menu_tables, WindowID(#FenetrePrincipale))
MenuTitle("Tables")
MenuItem(#Menu_table_des_clients , "Table des clients")
MenuItem(#Menu_table_des_produits, "Table des produits")
MenuItem(#Menu_table_des_fournisseurs, "Table des fournisseurs")
MenuTitle("Fenêtres")
MenuItem(#Menu_Cascade,"Cascade")
MenuItem(#Menu_TileVertically,"Vertical")
MenuItem(#Menu_TileHorizontally,"Horizontal")
MenuItem(#Menu_Next,"Suivante")
MenuItem(#Menu_Previous,"Précédente")
MenuItem(#Menu_Arrange,"Ré-organise")
MenuBar()
MenuItem(#Menu_ToutFermer , "Tout fermer")
; MenuItem(#Menu_table_des_clients , "Table des clients")
MDIGadget(#MDIGadget, 0, 0, 0, 0, 1, 100, #PB_MDI_AutoSize)
AddGadgetItem(#MDIGadget, #Fenetremenu1_table_des_clients, "Table des clients")
AddGadgetItem(#MDIGadget, #Fenetremenu2_table_des_produits, "Table des produits")
CreateFenetreFournisseurs()
; CloseWindow(#Fenetremenu2_table_des_produits)
; CloseWindow(#Fenetremenu3_table_des_fournisseurs)
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
; Le gadget MDI ne génère pas d'évènements
Case #ListeFournisseurs
Debug "#ListeFournisseurs"
EndSelect
Case #PB_Event_Menu
Select EventMenu()
Case #Menu_table_des_clients
Debug "Menu item 1 cliqué !"
If IsWindow(#Fenetremenu1_table_des_clients)
SetGadgetState(#MDIGadget, #Fenetremenu1_table_des_clients)
Else
AddGadgetItem(#MDIGadget, #Fenetremenu1_table_des_clients, "Table des clients")
EndIf
Case #Menu_table_des_produits
Debug "Menu item 2 cliqué !"
If IsWindow(#Fenetremenu2_table_des_produits)
SetGadgetState(#MDIGadget, #Fenetremenu2_table_des_produits)
Else
AddGadgetItem(#MDIGadget, #Fenetremenu2_table_des_produits, "Table des produits")
EndIf
Case #Menu_table_des_fournisseurs
Debug "Menu item 3 cliqué !"
If IsWindow(#Fenetremenu3_table_des_fournisseurs)
SetGadgetState(#MDIGadget, #Fenetremenu3_table_des_fournisseurs)
Else
CreateFenetreFournisseurs()
EndIf
Case #Menu_ToutFermer
ClearGadgetItems(#MDIGadget)
Case #Menu_Cascade
SetGadgetState(#MDIGadget,#PB_MDI_Cascade)
Case #Menu_TileVertically
SetGadgetState(#MDIGadget,#PB_MDI_TileVertically)
Case #Menu_TileHorizontally
SetGadgetState(#MDIGadget,#PB_MDI_TileHorizontally)
Case #Menu_Next
SetGadgetState(#MDIGadget, #PB_MDI_Next)
Case #Menu_Previous
SetGadgetState(#MDIGadget,#PB_MDI_Previous)
Case #Menu_Arrange
SetGadgetState(#MDIGadget, #PB_MDI_Arrange )
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #FenetrePrincipale
quit=1
Case #Fenetremenu1_table_des_clients
CloseWindow(#Fenetremenu1_table_des_clients)
Case #Fenetremenu2_table_des_produits
CloseWindow(#Fenetremenu2_table_des_produits)
Case #Fenetremenu3_table_des_fournisseurs
CloseWindow(#Fenetremenu3_table_des_fournisseurs)
EndSelect
Case #PB_Event_SizeWindow
Select EventWindow()
Case #FenetrePrincipale
Debug "Fenêtre principale redim"
Case #Fenetremenu1_table_des_clients
Debug "Fenêtre #Fenetremenu1_table_des_clients redim"
Case #Fenetremenu2_table_des_produits
Debug "Fenêtre #Fenetremenu2_table_des_produits redim"
Case #Fenetremenu3_table_des_fournisseurs
Debug "Fenêtre #Fenetremenu3_table_des_fournisseurs redim"
ResizeGadget(#ListeFournisseurs,#PB_Ignore,#PB_Ignore,
WindowWidth(#Fenetremenu3_table_des_fournisseurs),
WindowHeight(#Fenetremenu3_table_des_fournisseurs))
EndSelect
;Faire la même chose pour les évènements ci-dessous si necéssaire
; #PB_Event_MoveWindow : La fenêtre a été déplacée
; #PB_Event_MinimizeWindow : La fenêtre a été minimisée
; #PB_Event_MaximizeWindow : La fenêtre a été maximisée
; #PB_Event_RestoreWindow : La fenêtre a été restaurée à sa taille normale
; #PB_Event_ActivateWindow : La fenêtre a été activée (gain du focus)
; #PB_Event_DeactivateWindow: La fenêtre a été désactivée (perte du focus)
; #PB_Event_WindowDrop : Une opération Glisser & Déposer s'est terminée sur une fenêtre
; #PB_Event_GadgetDrop : Une opération Glisser & Déposer s'est terminée sur un gadget
; #PB_Event_RightClick : Un clic droit de la souris s'est produit sur la fenêtre. Cela peut être utile pour afficher un menu contextuel
; #PB_Event_LeftClick : Un clic gauche de la souris s'est produit sur la fenêtre
; #PB_Event_LeftDoubleClick : Un double clic gauche de la souris s'est produit sur la fenêtre
; #PB_Event_SysTray
; #PB_Event_Timer
; #PB_Event_Repaint
EndSelect
Until Quit=1
EndIf
Procedure CreateFenetreFournisseurs()
AddGadgetItem(#MDIGadget,#Fenetremenu3_table_des_fournisseurs, "Table des fournisseurs")
UseGadgetList(WindowID(#Fenetremenu3_table_des_fournisseurs)) ; renvoie à la liste de gadgets de la fenêtre fournisseur
ListIconGadget(#ListeFournisseurs,0,0,WindowWidth(#Fenetremenu3_table_des_fournisseurs),WindowHeight(#Fenetremenu3_table_des_fournisseurs),"ID",100)
AddGadgetColumn(#ListeFournisseurs, 1, "Nom", 100)
EndProcedure