Activation gadget conditionnée

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

Activation gadget conditionnée

Message 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()

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 !
Avatar de l’utilisateur
microdevweb
Messages : 1802
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Activation gadget conditionnée

Message 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()
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Activation gadget conditionnée

Message par Micoute »

Merci beaucoup microdevweb, c'était trop simple pour que j'y pense.
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