[Résolu] Modules

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Modules

Message 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 ...
Dernière modification par Micoute le mar. 25/juin/2013 9:32, modifié 4 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Modules

Message par nico »

Laisse passer du temps avant de faire ça car c'est mal codé.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Modules

Message 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é.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Répondre