[RESOLU] Gestion de StringGadget dans 2eme fenêtre
Publié : sam. 04/sept./2010 13:13
Bonjour
Je pensais que l'on pouvait gérer tous les evenements dans une boucle principale,
même ceux d'une fenêtre secondaire.
Hors quand j'ouvre ma 2eme fenêtre (menu liste) et que je fasse une saisie dans le StringGadget , et que je veuille fermer celle-çi
avec un EventWindows() (la croix rouge )ça plante à ; nomfiltr$=GetGadgetText(#ChxTrieEmpl),toujours reconnu actif dans
la boucle principale comme .......
Si je ferme avec un ButtonGadget() , ça fonctionne, pourtant c'est la même commande dans les
2 cas : CloseWindow(#Fenetre_1).
Ce qui est curieux , si je n'utilise que ListIconGadget() pourtant avec des retours d'informations
comme ;
selctResul = GetGadgetState(#LaListe)
leFichier$ = GetGadgetItemText(#LaListe, selctResul ,4)
il n'y a pas de problème, StringGadget aurait un fonctionnement particulier?
J'ai donc fait un 2eme code ou je gère la fermeture avec EventWindows() directement dans
la fenêtre secondaire, et là cela fonctionne et sans ajouter un ButtonGadget()
Es-que c'est la bonne solution ou es-que dans le premier code j'ai fait une erreur.
Merci par avance pour vos réponses et solutions.
Premier code
Second code
Je pensais que l'on pouvait gérer tous les evenements dans une boucle principale,
même ceux d'une fenêtre secondaire.
Hors quand j'ouvre ma 2eme fenêtre (menu liste) et que je fasse une saisie dans le StringGadget , et que je veuille fermer celle-çi
avec un EventWindows() (la croix rouge )ça plante à ; nomfiltr$=GetGadgetText(#ChxTrieEmpl),toujours reconnu actif dans
la boucle principale comme .......
Si je ferme avec un ButtonGadget() , ça fonctionne, pourtant c'est la même commande dans les
2 cas : CloseWindow(#Fenetre_1).
Ce qui est curieux , si je n'utilise que ListIconGadget() pourtant avec des retours d'informations
comme ;
selctResul = GetGadgetState(#LaListe)
leFichier$ = GetGadgetItemText(#LaListe, selctResul ,4)
il n'y a pas de problème, StringGadget aurait un fonctionnement particulier?
J'ai donc fait un 2eme code ou je gère la fermeture avec EventWindows() directement dans
la fenêtre secondaire, et là cela fonctionne et sans ajouter un ButtonGadget()
Es-que c'est la bonne solution ou es-que dans le premier code j'ai fait une erreur.
Merci par avance pour vos réponses et solutions.
Premier code
Code : Tout sélectionner
Enumeration
#Fenetre_0
#Fenetre_1
EndEnumeration
Enumeration
#LeMenu
#Quitter
EndEnumeration
Enumeration
#Nom
#LeNom
#LaListe
#TriEmplacement
#ChxTrieEmpl
#BtQuit
EndEnumeration
Procedure FenetreListe()
UseGadgetList(WindowID(#Fenetre_0))
If OpenWindow(#Fenetre_1, 200, 200, 1100, 800, "Liste ", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
StickyWindow(#Fenetre_1,1)
TextGadget(#TriEmplacement,220,35,150,20,"Recherche ")
StringGadget(#ChxTrieEmpl,220,50,150,20,"")
ListIconGadget(#LaListe, 10, 100, 1000, 700," ",100,#PB_ListIcon_FullRowSelect )
ButtonGadget(#BtQuit,220,10,150,20,"Quitter")
For i=1 To 4
AddGadgetColumn(#LaListe, i,"Champs"+Str(i), 100)
Next
EndIf
EndProcedure
Procedure CreerMenus()
If CreateMenu(#LeMenu,WindowID(#Fenetre_0))
MenuTitle("Fichier")
MenuItem(#Quitter,"&Quitter")
MenuTitle("Liste")
MenuItem(#LaListe,"&Liste")
EndIf
EndProcedure
Procedure Fenetre_Principale()
If OpenWindow(#Fenetre_0,0,0,1000,700,"Fenetre" ,#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#Nom,50,50,150,20,"Nom ")
StringGadget(#LeNom,80,50,150,20,"")
CreerMenus()
EndIf
EndProcedure
Fenetre_Principale()
Repeat
evenement = WaitWindowEvent()
;-Fenetre
If evenement = #PB_Event_CloseWindow
;Debug "event :"+Str(EventWindow() )
Select EventWindow()
Case #Fenetre_0 : quitx = 1
Case #Fenetre_1
;SetActiveGadget(#LeNom)
CloseWindow(#Fenetre_1)
EndSelect
EndIf
;-Menu
If evenement = #PB_Event_Menu
Select EventMenu()
Case #LaListe
FenetreListe()
Case #Quitter
quitx = 1
EndSelect
EndIf
Debug EventGadget()
;-Gadget
If evenement = #PB_Event_Gadget
Select EventGadget()
Case #LaListe
Select EventType()
Case #PB_EventType_LeftDoubleClick
selctResul = GetGadgetState(#LaListe)
leFichier$ = GetGadgetItemText(#LaListe, selctResul ,4)
EndSelect
Case #BtQuit
CloseWindow(#Fenetre_1)
; ************* BLOC StringGadget() ********************************
Case #ChxTrieEmpl
nomfiltr$=GetGadgetText(#ChxTrieEmpl)
; ************* BLOC StringGadget() ********************************
EndSelect
EndIf
Until quitx = 1
Code : Tout sélectionner
Enumeration
#Fenetre_0
#Fenetre_1
EndEnumeration
Enumeration
#LeMenu
#Quitter
EndEnumeration
Enumeration
#Nom
#LeNom
#LaListe
#TriEmplacement
#ChxTrieEmpl
EndEnumeration
Procedure FenetreListe()
UseGadgetList(WindowID(#Fenetre_0))
If OpenWindow(#Fenetre_1, 200, 200, 1100, 800, "Liste ", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
StickyWindow(#Fenetre_1,1)
TextGadget(#TriEmplacement,220,35,150,20,"Recherche ")
StringGadget(#ChxTrieEmpl,220,50,150,20,"")
ListIconGadget(#LaListe, 10, 100, 1000, 700,"Num ",100,#PB_ListIcon_FullRowSelect )
For i=1 To 4
AddGadgetColumn(#LaListe, i,"Champs"+Str(i), 100)
Next
;==============================================================================================================================
;
EndIf
Repeat
evenement2 = WaitWindowEvent()
If evenement2 = #PB_Event_CloseWindow
;Debug "event :"+Str(EventWindow() )
Select EventWindow()
Case #Fenetre_1
CloseWindow(#Fenetre_1)
EndSelect
EndIf
; Debug EventGadget()
If evenement2 = #PB_Event_Gadget
Select EventGadget()
Case #ChxTrieEmpl
nomfiltr$=GetGadgetText(#ChxTrieEmpl)
;
EndSelect
EndIf
Until evenement2 = #PB_Event_CloseWindow
EndProcedure
Procedure CreerMenus()
If CreateMenu(#LeMenu,WindowID(#Fenetre_0))
MenuTitle("Fichier")
MenuItem(#Quitter,"&Quitter")
MenuTitle("Liste")
MenuItem(#LaListe,"&Liste")
EndIf
EndProcedure
Procedure Fenetre_Principale()
If OpenWindow(#Fenetre_0,0,0,1000,700,"Fenetre" ,#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#Nom,50,50,150,20,"Nom ")
StringGadget(#LeNom,80,50,150,20,"")
CreerMenus()
EndIf
EndProcedure
Fenetre_Principale()
Repeat
evenement = WaitWindowEvent()
;-Fenetre
If evenement = #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_0 : quitx = 1
;
EndSelect
EndIf
;-Menu
If evenement = #PB_Event_Menu
Select EventMenu()
Case #LaListe
FenetreListe()
Case #Quitter
quitx = 1
EndSelect
EndIf
;-Gadget
Debug EventGadget()
If evenement = #PB_Event_Gadget
Select EventGadget()
Case #LaListe
Select EventType()
Case #PB_EventType_LeftDoubleClick
selctResul = GetGadgetState(#LaListe)
leFichier$ = GetGadgetItemText(#LaListe, selctResul ,4)
EndSelect
EndSelect
EndIf
Until quitx = 1