Page 1 sur 1

Comment reconnaitre un gadget parmi ses semblables

Publié : ven. 30/déc./2016 9:59
par Micoute
Bonjour à tous et du coup mes meilleurs vœux pour 2017,

je viens encore vers vous pour solliciter votre savoir et votre aide bienveillante.

Dans le cadre de mes programmes ludiques et éducatifs pour mes petits enfants, je souhaiterais que quand ils cliquent sur le bouton "Vérifier", le système reconnaisse le gadget qui à changé et non le fameux bouton, mais je ne m'en sors pas, peut-être que je n'utilises pas la bonne méthode, je suis ouvert à toutes vos propositions et je vous en remercie par avance.

Code : Tout sélectionner

#Nb_Questions = 1 ;les tableaux commencent à 0

Enumeration Fenetres
  #Fenetre_Principale
EndEnumeration 

Enumeration Gadgets
  #Cmb_0
  #Cmb_1
  #Txt_0
  #Txt_1
  #Btn_Quitter
  #Btn_Verifier
EndEnumeration

; Images incluses
DataSection
  IconeFenetre:
  IncludeBinary "D:\Programmation\Prg Perso\Gfx\icones\Conjugeur.ico"
EndDataSection

; Chargement des décodeurs d'images
UsePNGImageDecoder()

Structure Jeu
  Points.i
  C0.b
  C1.b
EndStructure

Global Dim Question.s(#Nb_Questions), Dim BonneReponse.s(#Nb_Questions), Dim Reponses.s(((#Nb_Questions + 1) * 3) - 1)
Global Evenement, EvenementFenetre, EvenementGadget, NbPoints.Jeu, Verif.Jeu, i, ID

NbPoints\Points = 0

Verif\C0 = 0
Verif\C1 = 0

Procedure AjouterIconeFenetre(WinID, IconID)
  SendMessage_(WinID,#WM_SETICON,#False,IconID)
EndProcedure

Procedure Initialisation()
  Restore Debut
  For i = 0 To #Nb_Questions
    Read.s Question(i)
    Read.s BonneReponse(i)
  Next i 
  
  For i = 0 To ArraySize(Reponses())
    Read.s Reponses(i)
  Next i  
  
EndProcedure

Procedure Verifier()
  ;ID = GadgetID(#Cmb_0)|GadgetID(#Cmb_1)
  ;Select ID
  ;  Case #Cmb_0
  If Verif\C0 = 0
    If GetGadgetText(#Cmb_0) = BonneReponse(0)
      Debug "Félicitations"
      Verif\C0 = 1
    Else
      Debug "Réfléchis encore !"
    EndIf
  EndIf  
  ;  Case #Cmb_1
  If Verif\C1 = 0
    If GetGadgetText(#Cmb_1) = BonneReponse(1)
      Debug "Félicitations"
      Verif\C1 = 1
    Else
      Debug "Réfléchis encore !"
    EndIf
  EndIf
  ;EndSelect
EndProcedure

Procedure Quitter()
  CloseWindow(#Fenetre_Principale)
  End
EndProcedure

Procedure Ouvrir_Fenetre_Principale()
  OpenWindow(#Fenetre_Principale, 420, 100, 350, 175, "Petit QCM", #PB_Window_ScreenCentered)
  AjouterIconeFenetre(WindowID(0), CatchImage(1, ?IconeFenetre) )
  ; Gadgetlist
  TextGadget(#Txt_0, 15, 15, 245, 25, Question(0))
  ComboBoxGadget(#Cmb_0, 255, 8, 71, 25)
  AddGadgetItem(#Cmb_0, 0, Reponses(0))
  AddGadgetItem(#Cmb_0, 1, Reponses(1))
  AddGadgetItem(#Cmb_0, 2, Reponses(2))
  TextGadget(#Txt_1, 15, 45, 245, 25, (Question(1)))
  ComboBoxGadget(#Cmb_1, 255, 38, 71, 25)
  AddGadgetItem(#Cmb_1, 0, Reponses(3))
  AddGadgetItem(#Cmb_1, 1, Reponses(4))
  AddGadgetItem(#Cmb_1, 2, Reponses(5))
  ButtonGadget(#Btn_Verifier, 15, 130, 120, 25, "Vérifier")
  ButtonGadget(#Btn_Quitter, 200, 130, 120, 25, "Quitter")
  
  BindGadgetEvent(#Btn_Verifier, @Verifier())
  BindGadgetEvent(#Btn_Quitter, @Quitter())
  
EndProcedure

Initialisation()
Ouvrir_Fenetre_Principale()

Repeat
  Evenement = WaitWindowEvent()
  Select Evenement
      ; +++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      EvenementGadget = EventGadget()
      ; Gadget
      If EvenementGadget = #Btn_Verifier
      ElseIf EvenementGadget = #Btn_Quitter
      EndIf ; Fin EvenementGadget
            ; +++++++++++++++++++++++++++++
            ; Fenetres
    Case #PB_Event_CloseWindow
      EvenementFenetre = EventWindow()
      If EvenementFenetre = #Fenetre_Principale
        CloseWindow(#Fenetre_Principale)
        Break
      EndIf ; Fin EvenementFenetre
            ; +++++++++++++++++++++++++++++
  EndSelect
ForEver
End

DataSection
  Debut:
  Data.s "Quelle est la couleur du cheval blanc d'Henri IV ?", "Blanc", "Qu'est-ce qui est plus fort qu'un turc ?", "Deux turcs"
  Data.s "Blanc", "Noir", "Alezan", "Un grec", "Un autre turc", "Deux turcs"
EndDataSection  

Re: Comment reconnaitre un gadget parmi ses semblables

Publié : ven. 30/déc./2016 12:55
par Zorro

Code : Tout sélectionner


#Nb_Questions = 1 ;les tableaux commencent à 0

Enumeration Fenetres
  #Fenetre_Principale
EndEnumeration

Enumeration Gadgets
  #Cmb_0
  #Cmb_1
  #Txt_0
  #Txt_1
  #Btn_Quitter
  #Btn_Verifier
EndEnumeration

; Images incluses
DataSection
  IconeFenetre:
  ;IncludeBinary "D:\Programmation\Prg Perso\Gfx\icones\Conjugeur.ico"
EndDataSection

; Chargement des décodeurs d'images
UsePNGImageDecoder()

Structure Jeu
  Points.i
  C0.b
  C1.b
  reponse1.s
  reponse2.s
EndStructure

Global Dim Question.s(#Nb_Questions), Dim BonneReponse.s(#Nb_Questions), Dim Reponses.s(((#Nb_Questions + 1) * 3) - 1)
Global Evenement, EvenementFenetre, EvenementGadget, NbPoints.Jeu, Verif.Jeu, i, ID

NbPoints\Points = 0

Verif\C0 = 0
Verif\C1 = 0

Procedure AjouterIconeFenetre(WinID, IconID)
  SendMessage_(WinID,#WM_SETICON,#False,IconID)
EndProcedure

Procedure Initialisation()
  Restore Debut
  For i = 0 To #Nb_Questions
    Read.s Question(i)
    Read.s BonneReponse(i)
  Next i
 
  For i = 0 To ArraySize(Reponses())
    Read.s Reponses(i)
  Next i 
 
EndProcedure

Procedure Verifier()
  ;ID = GadgetID(#Cmb_0)|GadgetID(#Cmb_1)
  ;Select ID
  ;  Case #Cmb_0
  
  
  ; Modifié par zorro
    If Verif\reponse1.s= BonneReponse(0)
      Debug "Félicitations"      
    Else
      Debug "Réfléchis encore !"
    EndIf
	
  ;  Case #Cmb_1
  
    If Verif\reponse2.s = BonneReponse(1)
      Debug "Félicitations"
      
    Else
      Debug "Réfléchis encore !"
    EndIf
	
  
  ;EndSelect
EndProcedure

Procedure Quitter()
  CloseWindow(#Fenetre_Principale)
  End
EndProcedure

Procedure Ouvrir_Fenetre_Principale()
  OpenWindow(#Fenetre_Principale, 420, 100, 350, 175, "Petit QCM", #PB_Window_ScreenCentered)
  AjouterIconeFenetre(WindowID(0), CatchImage(1, ?IconeFenetre) )
  ; Gadgetlist
  TextGadget(#Txt_0, 15, 15, 245, 25, Question(0))
  ComboBoxGadget(#Cmb_0, 255, 8, 71, 25)
  AddGadgetItem(#Cmb_0, 0, Reponses(0))
  AddGadgetItem(#Cmb_0, 1, Reponses(1))
  AddGadgetItem(#Cmb_0, 2, Reponses(2))
  TextGadget(#Txt_1, 15, 45, 245, 25, (Question(1)))
  ComboBoxGadget(#Cmb_1, 255, 38, 71, 25)
  AddGadgetItem(#Cmb_1, 0, Reponses(3))
  AddGadgetItem(#Cmb_1, 1, Reponses(4))
  AddGadgetItem(#Cmb_1, 2, Reponses(5))
  ButtonGadget(#Btn_Verifier, 15, 130, 120, 25, "Vérifier")
  ButtonGadget(#Btn_Quitter, 200, 130, 120, 25, "Quitter")
 
  BindGadgetEvent(#Btn_Verifier, @Verifier())
  BindGadgetEvent(#Btn_Quitter, @Quitter())
 
EndProcedure

Initialisation()
Ouvrir_Fenetre_Principale()

Repeat
  Evenement = WaitWindowEvent()
  Select Evenement
      ; +++++++++++++++++++++++++++++++++++
    Case #PB_Event_Gadget
      select EventGadget() ; modification Zorro
      ; Gadget
		Case #Cmb_0 ; Ajout Zorro
		Verif\reponse1.s=GetGadgetText(#Cmb_0)  ; on viens d'utiliser ce gadget, donc on recupere la reponse
		Case #Cmb_1 ;; Ajout Zorro
		Verif\reponse2.s=GetGadgetText(#Cmb_1) ; on viens d'utiliser ce gadget, donc on recupere la reponse
      case #Btn_Verifier
      case #Btn_Quitter
      EndSelect ; Fin EvenementGadget
            ; +++++++++++++++++++++++++++++
            ; Fenetres
    Case #PB_Event_CloseWindow
      EvenementFenetre = EventWindow()
      If EvenementFenetre = #Fenetre_Principale
        CloseWindow(#Fenetre_Principale)
        Break
      EndIf ; Fin EvenementFenetre
            ; +++++++++++++++++++++++++++++
  EndSelect
ForEver
End

DataSection
  Debut:
  Data.s "Quelle est la couleur du cheval blanc d'Henri IV ?", "Blanc", "Qu'est-ce qui est plus fort qu'un turc ?", "Deux turcs"
  Data.s "Blanc", "Noir", "Alezan", "Un grec", "Un autre turc", "Deux turcs"
EndDataSection  
; Epb

Re: Comment reconnaitre un gadget parmi ses semblables

Publié : ven. 30/déc./2016 14:38
par microdevweb
Voici une petit exemple, j'espère que c'est ce que tu cherche

Code : Tout sélectionner

Structure Gadget
  id.l
  txt.s
EndStructure
Global  NewList mesGadgets.Gadget()
Procedure QuelGadget()
  ; Sélectionne l'élément de la liste
  SelectElement(mesGadgets(),GetGadgetData(EventGadget()))
  With mesGadgets()
    Select GadgetType(EventGadget())
      Case #PB_GadgetType_Button
        Debug "Vous avez cliquez sur un bouton"
      Case #PB_GadgetType_String
        Debug "Vous etes dans un champs string"
    EndSelect
    Debug \txt
  EndWith
EndProcedure

OpenWindow(0,0,0,800,600,"Teste",#PB_Window_Maximize|#PB_Window_SystemMenu)
With mesGadgets()
  AddElement(mesGadgets())
  \id=ButtonGadget(#PB_Any,50,50,90,30,"Teste 1")
  \txt="Le bouton 1"
  SetGadgetData(\id,ListIndex(mesGadgets()))
  AddElement(mesGadgets())
  \id=ButtonGadget(#PB_Any,50,100,90,30,"Teste 2")
  \txt="Le bouton 2"
  SetGadgetData(\id,ListIndex(mesGadgets()))
  AddElement(mesGadgets())
  \id=StringGadget(#PB_Any,50,150,90,30,"")
  \txt="Le String 1"
  SetGadgetData(\id,ListIndex(mesGadgets()))
EndWith
BindEvent(#PB_Event_Gadget,@QuelGadget(),0)
Repeat
  Event=WaitWindowEvent()
Until Event=#PB_Event_CloseWindow


Re: Comment reconnaitre un gadget parmi ses semblables

Publié : ven. 30/déc./2016 17:53
par Micoute
Merci microdevweb, je passais par hasard en me disant qu'à cette période de l'année, le forum est très déserté, ce qui allait limité mes chances, mais quelle ne fut pas ma surprise de voir que tu avais réalisé mon vœu, merci encore et meilleurs vœux pour 2017.