Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
omega
Messages : 617
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par omega »

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
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par MLD »

Sans code difficile de te répondre.
Avatar de l’utilisateur
omega
Messages : 617
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par omega »

Pourtant c'est très clair, voici quand même un code exemple:

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
Merci de m'éclairer
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
case
Messages : 1527
Inscription : lun. 10/sept./2007 11:13

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par case »

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

Code : Tout sélectionner


Repeat
EventId=WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
   ExitMenu2=1
EndIf
Until  ExitMenu1=1
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

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
ImageImage
Avatar de l’utilisateur
MLD
Messages : 1097
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par MLD »

Ok Case a tout dit
Merci Case
Avatar de l’utilisateur
omega
Messages : 617
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par omega »

ça fonctionne !

Merci Case et bonne continuation
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
omega
Messages : 617
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par omega »

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:

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

Voilà, une fois ces lignes activées, ça ne marche plus...

la question reste donc toujours posée

merci de votre aide
Win7 (x64) 64 bits Pb 5.72
Avatar de l’utilisateur
case
Messages : 1527
Inscription : lun. 10/sept./2007 11:13

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par case »

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.
ImageImage
Avatar de l’utilisateur
case
Messages : 1527
Inscription : lun. 10/sept./2007 11:13

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par case »

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

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
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.

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
ImageImage
Avatar de l’utilisateur
omega
Messages : 617
Inscription : sam. 26/nov./2011 13:04
Localisation : Alger

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par omega »

Merci beaucoup Case, je vais tester...
Win7 (x64) 64 bits Pb 5.72
Mesa
Messages : 1093
Inscription : mer. 14/sept./2011 16:59

Re: Ouverture d'une 2ème fenêtre après réduction d'une 1ère

Message par Mesa »

Je me demande si tu ne cherches pas à utiliser le gadget MDI, en fait, comme ça:

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

Mesa.
Répondre