[R] Comment tester toutes les options en une seule opération

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] Comment tester toutes les options en une seule opération

Message par Micoute »

Bonjour à tous,

Connaissez-vous une solution pour savoir si une option a été cochée, sans faire
Case #Option_1,
Case #Option_2,
Etc...

Code : Tout sélectionner

Select EventGadget()
  Case #Option_1 To #Option_20
    If Str(GetGadgetState(X)) = Reponse(X)
      Vrai()
    Else
      Faux()
    EndIf 
  EndSelect
J'espère que vous pourrez encore m'aider, une fois de plus et je vous en remercie beaucoup.

voici mon code, pour l'instant, vous comprendrez que je travaille toujours pour l'éveil de mes petits enfants :

Code : Tout sélectionner

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #Fenetre_principale
EndEnumeration
;}
;{ Gadgets
Enumeration
  #Option_1
  #Option_2
  #Option_3
  #Option_4
  #Option_5
  #Option_6
  #Option_7
  #Option_8
  #Option_9
  #Option_10
  #Option_11
  #Option_12
  #Option_13
  #Option_14
  #Option_15
  #Option_16
  #Option_17
  #Option_18
  #Option_19
  #Option_20  
  #Txt_1
  #Txt_2
  #Txt_3
  #Txt_4
  #Txt_5
  #Txt_6
  #Txt_7
  #Txt_8
  #Txt_9
  #Txt_10
  #Container_0
  #Container_1
  #Container_2
  #Container_3
  #Container_4
  #Container_5
  #Container_6
  #Container_7
  #Container_8
  #Container_9
EndEnumeration

Enumeration Police
  #Police_Txt_1
  #Police_Txt_2
  #Police_Txt_3
  #Police_Txt_4
  #Police_Txt_5
  #Police_Txt_6
  #Police_Txt_7
  #Police_Txt_8
  #Police_Txt_9
  #Police_Txt_10
EndEnumeration  
;}
Global Event, X
Global Dim Question.s(9)
Global Dim Reponse.s(9)
;}
Procedure Lire_les_donnees()
  Restore Donnees
  For X = 0 To 9 
    Read.s Question(X)
    Read.s Reponse(X)
  Next
EndProcedure

Procedure Vrai()
  MessageRequester("Info","Bonne réponse"+#LF$+#LF$+"BRAVO")
EndProcedure 

Procedure Faux()
  MessageRequester("Info","Mauvaise réponse"+#LF$+#LF$+"ATTENTION")
EndProcedure 

Procedure Ouvrir_Fenetre_principale()
  If OpenWindow(#Fenetre_principale, 450, 40, 445, 480, "Reconnaître les noms", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    ContainerGadget(#Container_0, 5, 5, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_1, 10, 5, 190, 24, Question(0))
    OptionGadget(#Option_1, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_2, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_1, 5, 100, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_2, 10, 5, 190, 24, Question(1))
    OptionGadget(#Option_3, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_4, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_2, 5, 195, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_3, 10, 5, 190, 24, Question(2))
    OptionGadget(#Option_5, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_6, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_3, 5, 290, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_4, 10, 5, 190, 24, Question(3))
    OptionGadget(#Option_7, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_8, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_4, 5, 385, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_5, 10, 5, 190, 24, Question(4))
    OptionGadget(#Option_9, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_10, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_5, 225, 5, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_6, 10, 5, 190, 24, Question(5))
    OptionGadget(#Option_11, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_12, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_6, 225, 100, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_7, 10, 5, 190, 24, Question(6))
    OptionGadget(#Option_13, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_14, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_7, 225, 195, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_8, 10, 5, 190, 24, Question(7))
    OptionGadget(#Option_15, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_16, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_8, 225, 290, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_9, 10, 5, 190, 24, Question(8))
    OptionGadget(#Option_17, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_18, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    ContainerGadget(#Container_9, 225, 385, 215, 90, #PB_Container_Raised)
    TextGadget(#Txt_10, 10, 5, 190, 24, Question(9))
    OptionGadget(#Option_19, 60, 30, 100, 15, "C'est un nom")
    OptionGadget(#Option_20, 60, 50, 115, 15, "Ce n'est pas un nom")
    CloseGadgetList()
    
    SetGadgetFont(#Txt_1, LoadFont(#Police_Txt_1, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_2, LoadFont(#Police_Txt_2, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_3, LoadFont(#Police_Txt_3, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_4, LoadFont(#Police_Txt_4, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_5, LoadFont(#Police_Txt_5, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_6, LoadFont(#Police_Txt_6, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_7, LoadFont(#Police_Txt_7, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_8, LoadFont(#Police_Txt_8, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_9, LoadFont(#Police_Txt_9, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_10, LoadFont(#Police_Txt_10, "Verdana", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    
  EndIf
EndProcedure

Lire_les_donnees()

Ouvrir_Fenetre_principale()

;{-Boucle principale
Repeat
  Event = WaitWindowEvent()
  Select Event
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Option_1 To #Option_20
          If Str(GetGadgetState(X)) = Reponse(X)
            Vrai()
          Else
            Faux()
          EndIf 
      EndSelect
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Fenetre_principale
          CloseWindow(#Fenetre_principale)
          Break
      EndSelect
  EndSelect
ForEver
;
;}
DataSection
  Donnees:
  Data.s "nager","0","le chat","1","une armoire","1","avant","0","un cadeau","1"
  Data.s "une tante","1","depuis","0","un caramel","1","une femme","1","fortement","0"
EndDataSection
Dernière modification par Micoute le ven. 05/sept./2014 18:41, modifié 1 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 !
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment tester toutes les options en une seule opération

Message par Micoute »

Rebonjour à tous,
voici la solution que j'ai trouvée, ça permet de se diriger toujours vers la bonne procédure, quelque soit la réponse.
Bien évidemment, si vous trouvez mieux, j'adopte avec le plus grand plaisir !

Code : Tout sélectionner

Case #PB_Event_Gadget
  Select EventGadget()
    Case #Option_1
      If Reponse(0) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_2
      If Reponse(0) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
          
    Case #Option_3
      If Reponse(1) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_4
      If Reponse(1) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
          
    Case #Option_5
      If Reponse(2) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_6
      If Reponse(2) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
        
    Case #Option_7
      If Reponse(3) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_8
      If Reponse(3) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
          
    Case #Option_9
      If Reponse(4) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_10
      If Reponse(4) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
          
    Case #Option_11
      If Reponse(5) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_12
      If Reponse(5) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
         
    Case #Option_13
      If Reponse(6) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_14
      If Reponse(6) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
        
    Case #Option_15
      If Reponse(7) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_16
      If Reponse(7) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
          
    Case #Option_17
      If Reponse(8) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_18
      If Reponse(8) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
         
    Case #Option_19
      If Reponse(9) = "1"
        Vrai()
      Else  
        Faux()
      EndIf  
    Case #Option_20
      If Reponse(9) = "0"
        Vrai()
      Else  
        Faux()
      EndIf
  EndSelect
C'est un peu long, mais très fonctionnel.
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: Comment tester toutes les options en une seule opération

Message par nico »

C'est très simple, mais corrige les dimensions de tes tableaux, elles ne sont pas bonnes!

Code : Tout sélectionner

    Case #PB_Event_Gadget
      EventGadget =EventGadget()
      Select EventGadget
        Case #Option_1 To #Option_20
          If Str(GetGadgetState(EventGadget)) = Reponse(EventGadget)
            Vrai()
          Else
            Faux()
          EndIf 
      EndSelect
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment tester toutes les options en une seule opération

Message par Micoute »

Bonsoir nico et merci beaucoup, car c'est une formule comme ça que je cherchais !

Merci encore !
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