J'ai encore des problème avec les modules !
J'utilise les énumérations nommées (ex: enumeration fenetre, enum... gadget..etc) !
Mais apparemment cela ne marche pas dans les modules (énumération recommence a 0),
d'où des conflits (j'ai la parade, mais attribué des valeurs manuellement aux gadgets...)
J'ai préparer un petit bout de code pour que vous puissiez testé, dite moi :
BUG ou pas ! Dite moi ou je me suis planté !
Merci d'avance
Code : Tout sélectionner
; Enumérations nommées et module
; Quelle est l’intérêt si on ne peut pas utilisé les "Enumérations nommées"
; C'est exemple illustrer par le 1er Test !!! Le programme plante a la fermeture
; de la deuxième fenêtre (Normal les constante de la fenêtre et des gadget ont
; été réattribués !! Donc plus des fenêtre de retour)
; Le bon comportement est le Test 2 !
; Quelle est l’intérêt si l'on doit donner les valeur manuellement au constante ?
; Essayé et dite moi si on peut le considérer comme un BUG !!
; =======Test n° 1=========
; Lancer la compil tel quel, le programme plante a la sortie de la 2ème fenétre !
Enumeration fenetre
#f1
EndEnumeration
Enumeration Gadgets
#f1Gadget1
#f1Gadget2
#f1Gadget3
#f1Gadget4
#f1Gadget5
#f1Gadget6
EndEnumeration
; =======Test n° 2=========
; Commenter les énumération du test 1 (programme principal et module)
; et décommenter les énumération du test 2, (programme principal et module)
; et relancer la compil
; Enumeration fenetre
; #f1 = 1
; EndEnumeration
;
; Enumeration Gadgets
; #f1Gadget1 = 1
; #f1Gadget2
; #f1Gadget3
; #f1Gadget4
; #f1Gadget5
; #f1Gadget6
; EndEnumeration
;Debug "La prochaine valeur d'énumération est : " + #PB_Compiler_EnumerationValue
; Ici : Structure
; ici : Globale
; Ici : Déclaration
; Ici mes includes de mes modules
; XIncludeFile "xxxx... module "
;====================================================
;====================================================
DeclareModule Patate
;Toutes les Procedures déclarer ici seront accessible depuis l'extérieure du module !
; Debug "La prochaine valeur d'énumération = " + #PB_Compiler_EnumerationValue
; Donne une valeur qui n'est pas reprise pour la énumération ????
; =======Test n° 1=========
; Lancer la compil tel quel, le programme plante a la sortie de la 2ème fenetre !
Enumeration Fenetres
#f2
EndEnumeration
Enumeration Gadgets
;#f2Gadget1 = #PB_Compiler_EnumerationValue ; Ne marche pas !!!
#f2Gadget1
#f2Gadget2
#f2Gadget3
#f2Gadget4
#f2Gadget5
#f2Gadget6
EndEnumeration
; =======Test n° 2=========
; Commenter les énumération du test 1
; et décommenter les énumération du test 2, y compris dans le programme principale
; et lancer la compil
; Enumeration Fenetres
; #f2 = 2
; EndEnumeration
;
; Debug "La prochaine valeur d'énumération est : " + #PB_Compiler_EnumerationValue
; Enumeration Gadgets
; ;#f2Gadget1 = #PB_Compiler_EnumerationValue ; Ne marche pas !!!
; #f2Gadget1 = 10
; #f2Gadget2
; #f2Gadget3
; #f2Gadget4
; #f2Gadget5
; #f2Gadget6
; EndEnumeration
Declare Fenetre2()
EndDeclareModule
Module Patate
Procedure Fenetre2()
If OpenWindow(#f2, 400, 100, 300, 300, "PanelGadget", #PB_Window_SystemMenu)
TextGadget(#f2Gadget1, 20, 20, 130, 30, "Message !")
StringGadget(#f2Gadget2, 160, 20, 130, 30, "")
TextGadget(#f2Gadget3, 20, 70, 130, 30, "Message !")
StringGadget(#f2Gadget4, 160, 70, 130, 30, "")
ButtonGadget(#f2Gadget5, 45, 240, 80, 30,"FERMER")
ButtonGadget(#f2Gadget6, 170, 240, 80, 30,"QUITTER")
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #f2Gadget5 : f2Quitter = 1
Case #f2Gadget6 : f2Quitter = 1
EndSelect
Case #PB_Event_CloseWindow : f2Quitter = 1
EndSelect
Until f2Quitter = 1
EndIf
CloseWindow(#f2)
EndProcedure
EndModule
UseModule Patate
;====================================================
;====================================================
; Mes procedures du programme principales
Procedure Affiche()
Debug "#f1Gadget1 = "+Str(#f1Gadget1)
Debug "#f1Gadget6 = "+Str(#f1Gadget6)
Debug "#f2Gadget1 = "+Str(#f2Gadget1)
Debug "#f2Gadget6 = "+Str(#f2Gadget6)
EndProcedure
Procedure Fenetre1()
If OpenWindow(#f1, 50, 100, 300, 300, "PanelGadget", #PB_Window_SystemMenu )
PanelGadget (#f1Gadget1, 10, 10, 280, 200)
AddGadgetItem (#f1Gadget1, -1, "Onglet 1")
FrameGadget (#f1Gadget2, 0, -7, 280, 180, "")
AddGadgetItem (#f1Gadget1, -1,"Onglet 2")
FrameGadget (#f1Gadget3, 0, -7, 280, 180, "")
CloseGadgetList()
ButtonGadget(#f1Gadget5, 45, 240, 80, 30,"AFFICHE")
ButtonGadget(#f1Gadget6, 170, 240, 80, 30,"FENETRE 2")
EndIf
EndProcedure
;====================================================
Fenetre1() ; Lancement du programme
Repeat
Select WaitWindowEvent()
Case #PB_Event_Gadget
Select EventGadget()
Case #f1Gadget5 : Affiche()
Case #f1Gadget6 : Fenetre2();Patate::
EndSelect
Case #PB_Event_CloseWindow : f1Quitter = 1
EndSelect
Until f1Quitter = 1
End
A+
Ulix