Page 1 sur 1

Activation gadget conditionnée

Publié : lun. 23/mai/2016 10:07
par Micoute
Bonjour à tous, Je crée un calculateur de poids et je souhaiterais que le bouton "Voir les résultats" s'active uniquement si tous les renseignement, Poids, taille et sexe sont validés.

Je vous remercie par anticipation de votre aide qui va m'être plus qu'utile, puisqu'elle me servira plus tard aussi.

Code : Tout sélectionner

; Calculateur de poids
; Concepteur : Micoute
; Date création : 23 mai 2016
; Dernière mise à jour 23 mai 2016

Enumeration Fenetres
  #Fenetre_Renseignements
  #Fenetre_Resultats
EndEnumeration

Enumeration Gadgets
  #Str_PoidsIdeal
  #Txt_Poids_normal
  #Str_IMC
  #Str_PoidsNormal
  #Txt_Index_IMC
  #Txt_Poids_ideal
  #Str_Verdict_Poids_normal
  #Str_Verdict_Imc
  #Str_Verdict_Poids_Ideal
  #Str_Conseil
  #Txt_Poids
  #Txt_Taille
  #Str_Poids
  #Str_Taille
  #Txt_Sexe
  #Btn_Ok
EndEnumeration

Enumeration Sexe
  #Femme
  #Homme
EndEnumeration  

Global Event, Poids.d, Taille.d, IMC.d, Coeff.d, Ideal.d, IMC$, Coeff$, Ideal$, Sexe, IMCa$, Idealdif$, Ideala$

Procedure Ouvrir_Fenetre_Resultats()
  If OpenWindow(#Fenetre_Resultats, 704, 40, 550, 205, "Resultat", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
    StringGadget(#Str_PoidsIdeal, 120, 80, 80, 20, "", #PB_String_ReadOnly)
    StringGadget(#Txt_Poids_normal, 30, 40, 90, 20, "...Poids normal", #PB_String_ReadOnly)
    StringGadget(#Str_IMC, 120, 120, 80, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_PoidsNormal, 120, 40, 80, 20, "", #PB_String_ReadOnly)
    StringGadget(#Txt_Index_IMC, 30, 120, 90, 20, "...Index IMC", #PB_String_ReadOnly)
    StringGadget(#Txt_Poids_ideal, 30, 80, 90, 20, "...Poids Ideal", #PB_String_ReadOnly)
    StringGadget(#Str_Verdict_Poids_normal, 260, 40, 270, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_Verdict_Imc, 260, 120, 270, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_Verdict_Poids_Ideal, 260, 80, 270, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_Conseil, 260, 160, 270, 20, "", #PB_String_ReadOnly)
  
    IMC.d   = Poids / ((Taille / 100) * (Taille / 100))
    Coeff.d = Taille - 100
    Ideal.d = (Taille - 100) * 0.9
    
    IMC$ = Str(IMC)
    Coeff$ = Str(Coeff)
    Ideal$ = Str(Ideal)
    
    If Sexe = #Homme
      If IMC < 20
        IMCa$ = "Vous êtes trop maigre."
      ElseIf IMC > 20 And IMC < 25
        IMCa$ = "Vous avez poids normal."
      ElseIf IMC > 25 And IMC < 30
        IMCa$ = "Vous êtes en surpoids."
      ElseIf IMC > 30 And IMC < 40
        IMCa$ = "Vous avez de l'obésité."
      ElseIf IMC > 40
        IMCa$ = "Vous avez une obésité sévère."
      EndIf
    EndIf
    
    If Sexe = #Femme
      If IMC < 19
        IMCa$ = "Vous êtes trop maigre."
      ElseIf IMC > 19 And IMC < 24
        IMCa$ = "Vous avez poids normal."
      ElseIf IMC > 24 And IMC < 30
        IMCa$ = "Vous êtes en surpoids."
      ElseIf IMC > 30 And IMC < 40
        IMCa$ = "Vous avez de l'obésité."
      ElseIf IMC > 40
        IMCa$ = "Vous avez une obésité sévère."
      EndIf
    EndIf
    
    If Coeff > Poids
      Coeffdif$ = Str(Coeff  - Poids)
      Coeffa$ = "Vous êtes " + Coeffdif$ + " Kg sous votre poids normal."
    ElseIf Coeff < Poids
      Coeffdif$ = Str(Poids - Coeff)
      Coeffa$ = "Vous êtes " + Coeffdif$ + " Kg au-dessus de votre poids normal."
    Else
      Coeffa$ = "Vous avez un poids normal."
    EndIf
    
    If Ideal > Poids
      Idealdif$ = Str(Ideal  - Poids)
      Ideala$ = "Vous êtes " + Idealdif$ + " Kg sous votre poids idéal."
    ElseIf Ideal < Poids
      Idealdif$ = Str(Poids - Ideal)
      Ideala$ = "Vous êtes " + Idealdif$ + " Kg au-dessus de votre poids idéal."
    Else
      Ideala$ = "Vous avez le poids idéal."
    EndIf 
    
    If IMCa$ = "Vous êtes trop maigre." Or IMCa$ = "Vous êtes en surpoids."
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($FF,$FF,$00))
      Conseil$ = "S'il vous plaît prêtez plus d'attention à votre alimentation."
    ElseIf IMCa$ = "Vous êtes en surpoids."
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($FF,433,$00))
      Conseil$ = "S'il vous plaît consultez un médecin!"
    ElseIf IMCa$ = "Vous avez de l'obésité."
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($FF,$66,$00))
      Conseil$ = "S'il vous plaît consultez un médecin!"
    Else
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($00,$CC,$00))
      Conseil$ = "Tout est Ok."
    EndIf
    
    SetGadgetText(#Str_PoidsNormal, Coeff$)
    SetGadgetText(#Str_PoidsIdeal, Ideal$)
    SetGadgetText(#Str_IMC, IMC$)
    SetGadgetText(#Str_Verdict_Poids_normal, Coeffa$)
    SetGadgetText(#Str_Verdict_Poids_Ideal, Ideala$)
    SetGadgetText(#Str_Verdict_Imc, IMCa$)
    SetGadgetText(#Str_Conseil, Conseil$)
  
  Repeat
    Event = WaitWindowEvent(1)
  Until Event = #PB_Event_CloseWindow
  End
EndIf  
EndProcedure

Procedure Ouvrir_Fenetre_Renseignements()
  If OpenWindow(#Fenetre_Renseignements, 0, 00, 240, 140, "Calculateur de poids", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    TextGadget(#Txt_Poids, 5, 15, 110, 20, "Entrez le poids (en Kg)")
    TextGadget(#Txt_Taille, 5, 40, 110, 20, "Entrez la taille (en cm)")
    StringGadget(#Str_Poids, 125, 15, 105, 20, "")
    StringGadget(#Str_Taille, 125, 40, 105, 20, "")
    OptionGadget(#Femme, 90, 80, 65, 25, "Femme")
    OptionGadget(#Homme, 165, 80, 65, 25, "Homme")
    TextGadget(#Txt_Sexe, 5, 80, 75, 25, "Sexe :", #SS_CENTERIMAGE)
    ButtonGadget(#Btn_Ok, 75,110, 90, 25, "Voir les résultats")
  EndIf
  
  Repeat
    Event = WaitWindowEvent(1)
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Femme
            Sexe = #Femme
          Case #Homme
            Sexe = #Homme
          Case #Btn_Ok            
            Poids = ValD(GetGadgetText(#Str_Poids))
            Taille = ValD(GetGadgetText(#Str_Taille)) 
            If poids > 0.0 Or Taille > 0.0
            CloseWindow(#Fenetre_Renseignements)
              Ouvrir_Fenetre_Resultats()
            Else 
            CloseWindow(#Fenetre_Renseignements)
              Break
            EndIf  
        EndSelect
        
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #Fenetre_Renseignements 
            CloseWindow(#Fenetre_Renseignements)
        EndSelect
    EndSelect
  ForEver
EndProcedure

Ouvrir_Fenetre_Renseignements()


Re: Activation gadget conditionnée

Publié : lun. 23/mai/2016 10:27
par microdevweb
Voila j'ai ajouté MICOR à ce que j'ai ajouté ou modifié, j'ai également ajouté un End car tu avais un petit bug

Code : Tout sélectionner

; Calculateur de poids
; Concepteur : Micoute
; Date création : 23 mai 2016
; Dernière mise à jour 23 mai 2016

Enumeration Fenetres
  #Fenetre_Renseignements
  #Fenetre_Resultats
EndEnumeration

Enumeration Gadgets
  #Str_PoidsIdeal
  #Txt_Poids_normal
  #Str_IMC
  #Str_PoidsNormal
  #Txt_Index_IMC
  #Txt_Poids_ideal
  #Str_Verdict_Poids_normal
  #Str_Verdict_Imc
  #Str_Verdict_Poids_Ideal
  #Str_Conseil
  #Txt_Poids
  #Txt_Taille
  #Str_Poids
  #Str_Taille
  #Txt_Sexe
  #Btn_Ok
EndEnumeration

Enumeration Sexe
  #Femme
  #Homme
EndEnumeration  

Global Event, Poids.d, Taille.d, IMC.d, Coeff.d, Ideal.d, IMC$, Coeff$, Ideal$, Sexe, IMCa$, Idealdif$, Ideala$

Procedure Ouvrir_Fenetre_Resultats()
  If OpenWindow(#Fenetre_Resultats, 704, 40, 550, 205, "Resultat", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
    StringGadget(#Str_PoidsIdeal, 120, 80, 80, 20, "", #PB_String_ReadOnly)
    StringGadget(#Txt_Poids_normal, 30, 40, 90, 20, "...Poids normal", #PB_String_ReadOnly)
    StringGadget(#Str_IMC, 120, 120, 80, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_PoidsNormal, 120, 40, 80, 20, "", #PB_String_ReadOnly)
    StringGadget(#Txt_Index_IMC, 30, 120, 90, 20, "...Index IMC", #PB_String_ReadOnly)
    StringGadget(#Txt_Poids_ideal, 30, 80, 90, 20, "...Poids Ideal", #PB_String_ReadOnly)
    StringGadget(#Str_Verdict_Poids_normal, 260, 40, 270, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_Verdict_Imc, 260, 120, 270, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_Verdict_Poids_Ideal, 260, 80, 270, 20, "", #PB_String_ReadOnly)
    StringGadget(#Str_Conseil, 260, 160, 270, 20, "", #PB_String_ReadOnly)
  
    IMC.d   = Poids / ((Taille / 100) * (Taille / 100))
    Coeff.d = Taille - 100
    Ideal.d = (Taille - 100) * 0.9
    
    IMC$ = Str(IMC)
    Coeff$ = Str(Coeff)
    Ideal$ = Str(Ideal)
    
    If Sexe = #Homme
      If IMC < 20
        IMCa$ = "Vous êtes trop maigre."
      ElseIf IMC > 20 And IMC < 25
        IMCa$ = "Vous avez poids normal."
      ElseIf IMC > 25 And IMC < 30
        IMCa$ = "Vous êtes en surpoids."
      ElseIf IMC > 30 And IMC < 40
        IMCa$ = "Vous avez de l'obésité."
      ElseIf IMC > 40
        IMCa$ = "Vous avez une obésité sévère."
      EndIf
    EndIf
    
    If Sexe = #Femme
      If IMC < 19
        IMCa$ = "Vous êtes trop maigre."
      ElseIf IMC > 19 And IMC < 24
        IMCa$ = "Vous avez poids normal."
      ElseIf IMC > 24 And IMC < 30
        IMCa$ = "Vous êtes en surpoids."
      ElseIf IMC > 30 And IMC < 40
        IMCa$ = "Vous avez de l'obésité."
      ElseIf IMC > 40
        IMCa$ = "Vous avez une obésité sévère."
      EndIf
    EndIf
    
    If Coeff > Poids
      Coeffdif$ = Str(Coeff  - Poids)
      Coeffa$ = "Vous êtes " + Coeffdif$ + " Kg sous votre poids normal."
    ElseIf Coeff < Poids
      Coeffdif$ = Str(Poids - Coeff)
      Coeffa$ = "Vous êtes " + Coeffdif$ + " Kg au-dessus de votre poids normal."
    Else
      Coeffa$ = "Vous avez un poids normal."
    EndIf
    
    If Ideal > Poids
      Idealdif$ = Str(Ideal  - Poids)
      Ideala$ = "Vous êtes " + Idealdif$ + " Kg sous votre poids idéal."
    ElseIf Ideal < Poids
      Idealdif$ = Str(Poids - Ideal)
      Ideala$ = "Vous êtes " + Idealdif$ + " Kg au-dessus de votre poids idéal."
    Else
      Ideala$ = "Vous avez le poids idéal."
    EndIf 
    
    If IMCa$ = "Vous êtes trop maigre." Or IMCa$ = "Vous êtes en surpoids."
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($FF,$FF,$00))
      Conseil$ = "S'il vous plaît prêtez plus d'attention à votre alimentation."
    ElseIf IMCa$ = "Vous êtes en surpoids."
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($FF,433,$00))
      Conseil$ = "S'il vous plaît consultez un médecin!"
    ElseIf IMCa$ = "Vous avez de l'obésité."
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($FF,$66,$00))
      Conseil$ = "S'il vous plaît consultez un médecin!"
    Else
      SetGadgetColor(#Str_Conseil,#PB_Gadget_BackColor,RGB($00,$CC,$00))
      Conseil$ = "Tout est Ok."
    EndIf
    
    SetGadgetText(#Str_PoidsNormal, Coeff$)
    SetGadgetText(#Str_PoidsIdeal, Ideal$)
    SetGadgetText(#Str_IMC, IMC$)
    SetGadgetText(#Str_Verdict_Poids_normal, Coeffa$)
    SetGadgetText(#Str_Verdict_Poids_Ideal, Ideala$)
    SetGadgetText(#Str_Verdict_Imc, IMCa$)
    SetGadgetText(#Str_Conseil, Conseil$)
  
  Repeat
    Event = WaitWindowEvent(1)
  Until Event = #PB_Event_CloseWindow
  End
EndIf  
EndProcedure
; MICRO
Procedure EventMyGadget()
    If GetGadgetState(#Femme)<>0 Or GetGadgetState(#Homme)<>0
        If Val(GetGadgetText(#Str_Poids))>0 And  Val(GetGadgetText(#Str_Taille))>0
            HideGadget(#Btn_Ok,#False)
            ProcedureReturn ; Pour le pas aller lpus loin
        EndIf
    EndIf
    HideGadget(#Btn_Ok,#True)
EndProcedure
Procedure Ouvrir_Fenetre_Renseignements()
  If OpenWindow(#Fenetre_Renseignements, 0, 00, 240, 140, "Calculateur de poids", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    TextGadget(#Txt_Poids, 5, 15, 110, 20, "Entrez le poids (en Kg)")
    TextGadget(#Txt_Taille, 5, 40, 110, 20, "Entrez la taille (en cm)")
    StringGadget(#Str_Poids, 125, 15, 105, 20, "")
    StringGadget(#Str_Taille, 125, 40, 105, 20, "")
    OptionGadget(#Femme, 90, 80, 65, 25, "Femme")
    OptionGadget(#Homme, 165, 80, 65, 25, "Homme")
    TextGadget(#Txt_Sexe, 5, 80, 75, 25, "Sexe :", #SS_CENTERIMAGE)
    ButtonGadget(#Btn_Ok, 75,110, 90, 25, "Voir les résultats")
    HideGadget(#Btn_Ok,#True);MICRO
    BindEvent(#PB_Event_Gadget,@EventMyGadget(),#Fenetre_Renseignements)
  EndIf
  
  Repeat
    Event = WaitWindowEvent(1)
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #Femme
            Sexe = #Femme
          Case #Homme
            Sexe = #Homme
          Case #Btn_Ok            
            Poids = ValD(GetGadgetText(#Str_Poids))
            Taille = ValD(GetGadgetText(#Str_Taille)) 
            If poids > 0.0 Or Taille > 0.0
            CloseWindow(#Fenetre_Renseignements)
              Ouvrir_Fenetre_Resultats()
            Else 
            CloseWindow(#Fenetre_Renseignements)
              Break
            EndIf  
        EndSelect
        
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #Fenetre_Renseignements 
              CloseWindow(#Fenetre_Renseignements)
              End ; MICRO
        EndSelect
    EndSelect
  ForEver
EndProcedure

Ouvrir_Fenetre_Renseignements()

Re: Activation gadget conditionnée

Publié : lun. 23/mai/2016 12:17
par Micoute
Merci beaucoup microdevweb, c'était trop simple pour que j'y pense.