Page 1 sur 1

[Résolu] Modules

Publié : lun. 24/juin/2013 17:51
par Micoute
Bonjour à tous, j'ai essayé de faire un programme en utilisant des modules, mais je ne comprend pas pourquoi ça ne marche pas comme il se devrait.

[Réédit] Code corrigé et fonctionnel !

Code : Tout sélectionner

DeclareModule Tension
Enumeration
   #Fenetre_principale   
   #Fenetre
EndEnumeration

Enumeration   
   #Texte_Tension
   #Chaine_Tension
   #Texte_Intensite
   #Chaine_Intensite
   #Texte_Resistance
   #Chaine_Resistance
   #Bouton_Convertir
   #Frame3D_Resultat
   #Chaine_Resultat
EndEnumeration

Declare Ouvrir_Fenetre()
EndDeclareModule

DeclareModule Intensite
Enumeration
   #Fenetre_principale   
   #Fenetre
EndEnumeration

Enumeration   
   #Texte_Tension
   #Chaine_Tension
   #Texte_Intensite
   #Chaine_Intensite
   #Texte_Resistance
   #Chaine_Resistance
   #Bouton_Convertir
   #Frame3D_Resultat
   #Chaine_Resultat
EndEnumeration

Declare Ouvrir_Fenetre()
EndDeclareModule

DeclareModule Resistance
Enumeration
   #Fenetre_principale   
   #Fenetre
EndEnumeration

Enumeration   
   #Texte_Tension
   #Chaine_Tension
   #Texte_Intensite
   #Chaine_Intensite
   #Texte_Resistance
   #Chaine_Resistance
   #Bouton_Convertir
   #Frame3D_Resultat
   #Chaine_Resultat
EndEnumeration

Declare Ouvrir_Fenetre()
EndDeclareModule

Enumeration
   #Fenetre_principale
EndEnumeration
;}
;{ Gadgets
Enumeration   
   #Texte_Tension
   #Chaine_Tension
   #Texte_Intensite
   #Chaine_Intensite
   #Texte_Resistance
   #Chaine_Resistance
   #Bouton_Convertir
   #Frame3D_Resultat
   #Chaine_Resultat
   #Conteneur_0
   #Option_Tension
   #Option_Intensite
   #Option_Resistance
   #Image_UIR
EndEnumeration
;}
Global Tension.f, Intensite.f, Resistance.f
Global FichierImage1$ = "D:\Programmation\Prg perso\Gfx\UIR.png"
UsePNGImageDecoder()

Procedure Ouvrir_Fenetre()
   If OpenWindow(#Fenetre_principale, 450, 200, 400, 400, "Loi d'Ohm", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
      ContainerGadget(#Conteneur_0, 85, 270, 245, 110, #PB_Container_BorderLess)
      OptionGadget(#Option_Tension, 40, 25, 245, 15, "Calcul de la tension en Volts")
      OptionGadget(#Option_Intensite, 40, 45, 245, 15, "Calcul de l'intensité en Ampères")
      OptionGadget(#Option_Resistance, 40, 65, 245, 15, "Calcul de la résistance en Ohms")
      CloseGadgetList()
      SetWindowColor(#Fenetre_principale, $E0E0E0)
      
      Resultat = CreateImage(#Image_UIR, 185, 227)
      If Resultat
         Resultat = LoadImage(#Image_UIR, FichierImage1$)
         If Resultat
            ResizeImage(#Image_UIR,355,227)
            ImageGadget(#Image_UIR, 20,25,380,227, ImageID(#Image_UIR))
         EndIf
      EndIf
   EndIf
EndProcedure

Module Tension
Procedure Ouvrir_Fenetre()
   If OpenWindow(#Fenetre, 450, 200, 400, 400, "Loi d'Ohm - Tension", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar, #Fenetre_principale)
      TextGadget(#Texte_Resistance, 25, 50, 105, 15, "Résistance en Ohms :")
      TextGadget(#Texte_Intensite, 20, 90, 110, 15, "Intensité en Ampères :")
      StringGadget(#Chaine_Resistance, 160, 45, 175, 25, "")
      StringGadget(#Chaine_Intensite, 160, 90, 175, 25, "")
      ButtonGadget(#Bouton_Convertir, 50, 160, 300, 30, "Convertir")
      Frame3DGadget(#Frame3D_Resultat, 30, 230, 335, 130, "Résultat")
      StringGadget(#Chaine_Resultat, 50, 280, 300, 35, "", #PB_String_ReadOnly)
      ;SetWindowColor(#Fenetre_Tension, $FF80FF)
   EndIf
EndProcedure
EndModule

Module Intensite
Procedure Ouvrir_Fenetre()
   If OpenWindow(#Fenetre, 450, 200, 400, 400, "Loi d'Ohm - Intensité", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar, #Fenetre_principale)
      TextGadget(#Texte_Tension, 25, 50, 105, 15, "Tension en volts :")
      TextGadget(#Texte_Resistance, 20, 90, 110, 15, "Résistance en Ohms :")
      StringGadget(#Chaine_Tension, 160, 45, 175, 25, "")
      StringGadget(#Chaine_Resistance, 160, 90, 175, 25, "")
      ButtonGadget(#Bouton_Convertir, 50, 160, 300, 30, "Convertir")
      Frame3DGadget(#Frame3D_Resultat, 30, 230, 335, 130, "Résultat")
      StringGadget(#Chaine_Resultat, 50, 280, 300, 35, "", #PB_String_ReadOnly)
      ;SetWindowColor(#Fenetre_Intensite, $80FFFF)
   EndIf
EndProcedure
EndModule

Module Resistance
Procedure Ouvrir_Fenetre()
   If OpenWindow(#Fenetre, 450, 200, 400, 400, "Loi d'Ohm - Résistance", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar, #Fenetre_principale)
      TextGadget(#Texte_Tension, 25, 50, 105, 15, "Tension en volts :")
      TextGadget(#Texte_Intensite, 20, 90, 110, 15, "Intensité en Ampères :")
      StringGadget(#Chaine_Tension, 160, 45, 175, 25, "")
      StringGadget(#Chaine_Intensite, 160, 90, 175, 25, "")
      ButtonGadget(#Bouton_Convertir, 50, 160, 300, 30, "Convertir")
      Frame3DGadget(#Frame3D_Resultat, 30, 230, 335, 130, "Résultat")
      StringGadget(#Chaine_Resultat, 50, 280, 300, 35, "", #PB_String_ReadOnly)
      ;SetWindowColor(#Fenetre_Resistance, $FF8080)
   EndIf
EndProcedure
EndModule

Ouvrir_Fenetre()

Repeat
   Select WaitWindowEvent()
         ; ///////////////////
      Case #PB_Event_Gadget
         Select EventGadget()
            Case #Option_Tension
               Resultat = 1
               Tension::Ouvrir_Fenetre()
            Case #Option_Intensite
               Resultat = 2
               Intensite::Ouvrir_Fenetre()
            Case #Option_Resistance
               Resultat = 3
               Resistance::Ouvrir_Fenetre()
            Case #Bouton_Convertir
               If Resultat = 1
                  R.f = ValF(GetGadgetText(#Chaine_Resistance))
                  I.f = ValF(GetGadgetText(#Chaine_Intensite))
                  SetGadgetText(#Chaine_Resultat, "La Tension est de " + StrF(R * I, 2)+" Volts")
               EndIf
               If Resultat = 2
                  U.f = ValF(GetGadgetText(#Chaine_Tension))
                  R.f = ValF(GetGadgetText(#Chaine_Resistance))
                  SetGadgetText(#Chaine_Resultat, "L'intensité est de " + StrF(U / R, 2)+" Ampères")
               EndIf
               If Resultat = 3   					
                  U.f = ValF(GetGadgetText(#Chaine_Tension))
                  I.f = ValF(GetGadgetText(#Chaine_Intensite))
                  SetGadgetText(#Chaine_Resultat, "La résistance est de " + StrF(U / I, 2)+" Ohms")
               EndIf
         EndSelect
         ; ////////////////////////
      Case #PB_Event_CloseWindow
         Select EventWindow()
            Case #Fenetre_principale
               CloseWindow(#Fenetre_principale)
               Break
            Case Tension::#Fenetre
               CloseWindow(Tension::#Fenetre)
            Case Intensite::#Fenetre
               CloseWindow(Intensite::#Fenetre)
            Case Resistance::#Fenetre
               CloseWindow(Resistance::#Fenetre)
         EndSelect
   EndSelect
ForEver
Je vous remercie tous et si ce code vous donne des idées ...

Re: Modules

Publié : lun. 24/juin/2013 21:42
par nico
Laisse passer du temps avant de faire ça car c'est mal codé.

Re: Modules

Publié : mar. 25/juin/2013 8:00
par Micoute
nico a écrit :Laisse passer du temps avant de faire ça car c'est mal codé.
Bonjour nico et merci, j'aimerais savoir manier les modules, car ça a l'air prometteur !

[Réédit] après correction des erreurs, ce code fonctionne très bien, mais il faut que quand des constantes sont communes, elle doivent avoir la même valeur.

Premier post corrigé.