[Résolu] Le #gadget spécifié n'est pas initialisé.

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] Le #gadget spécifié n'est pas initialisé.

Message par Micoute »

Bonjour à tous,

toujours dans les programmes éducatifs pour mes petits enfants, je leur ai concocté un logiciel de drag et drop où il suffit de glisser la réponse au bonne endroit, mais j'ai une erreur à la ligne 385 : Le #gadget spécifié n'est pas initialisé.
J'ai beau regarder et déboguer, mais je ne vois pas d'erreur ! S'il vous plait, quelqu'un pourrait-il venir à mon secours pour me sauver de la noyade cybernétique ? Merci.

Code : Tout sélectionner

;Drag & Drop

;Utilisation de BindGadgetEvent() (lier un événement à un gadget)
;Utilisation du Drag & Drop (Glisser-Déposer)

EnableExplicit

;Enumérations
Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Cvs
  #Txt_Definitions
  #Txt_Enonce
  #Str_1
  #Str_2
  #Str_3
  #Str_4
  #Str_5
  #Str_6
  #Str_Cible_1
  #Str_Cible_2
  #Str_Cible_3
  #Str_Cible_4
  #Str_Cible_5
  #Str_Cible_6
  #Str_Source_1
  #Str_Source_2
  #Str_Source_3
  #Str_Source_4
  #Str_Source_5
  #Str_Source_6
  #Btn_Valider
  #Btn_Prec
  #Btn_Suiv
EndEnumeration

Enumeration Fontes
  #Font_Txt_Definitions
  #Font_Txt_Enonce
  #Font_Str_1
  #Font_Str_2
  #Font_Str_3
  #Font_Str_4
  #Font_Str_5
  #Font_Str_6
  #Font_rep_1
  #Font_rep_2
  #Font_rep_3
  #Font_rep_4
  #Font_rep_5
  #Font_rep_6
  #Font_Source_1
  #Font_Source_2
  #Font_Source_3
  #Font_Source_4
  #Font_Source_5
  #Font_Source_6
  #Font_Btn_Valider  
  #Font_Btn_Prec
  #Font_Btn_Suiv
EndEnumeration

;}
;- déclarations des variables et des tableaux
Global Evenement, EvenementGadget, TypeEvenement, S = 1, cx, cy, gadx, gady, i
Global Dim Question.s(5), Dim Source.s(5)

;Structure
Structure GadgetUtilise
  ID.l
  x.l 
  y.l 
  Largeur.i
  Hauteur.i 
  DeplacementActif.i
  Texte.s
EndStructure

Global Dim Cible.GadgetUtilise(5)


Cible(0)\x = 15
Cible(0)\y = 510
Cible(1)\x = 370
Cible(1)\y = 510
Cible(2)\x = 725
Cible(2)\y = 510
Cible(3)\x = 15
Cible(3)\y = 575
Cible(4)\x = 370
Cible(4)\y = 575
Cible(5)\x = 725
Cible(5)\y = 575

For i = 0 To ArraySize(Cible())
  Cible(i)\Largeur = 350
  Cible(i)\Hauteur = 60
Next i

Restore S1

; Procédures
Procedure Lire_les_donnees()  
  For i = 0 To 5 
    Read.s Question(i)
    Read.s Source(i)
    Cible(i)\Texte = Source(i)
  Next
  RandomizeArray(Cible(),1,5)
EndProcedure

Procedure Valider()
  If GetGadgetText(#Str_Cible_1) = Source(1)
    SetGadgetColor(#Str_Cible_1, #PB_Gadget_FrontColor, $007F00)
    SetGadgetColor(#Str_Cible_1, #PB_Gadget_BackColor, $00FFFF)
    For i = 13 To 18
      If GetGadgetText(i) = GetGadgetText(#Str_Cible_1)
        HideGadget(i, 1)
      EndIf
    Next  
  EndIf
  If GetGadgetText(#Str_Cible_2) = Source(2)
    SetGadgetColor(#Str_Cible_2, #PB_Gadget_FrontColor, $007F00)
    SetGadgetColor(#Str_Cible_2, #PB_Gadget_BackColor, $00FFFF)
    For i = 13 To 18
      If GetGadgetText(i) = GetGadgetText(#Str_Cible_2)
        HideGadget(i, 1)
      EndIf
    Next
  EndIf
  If GetGadgetText(#Str_Cible_3) = Source(3)
    SetGadgetColor(#Str_Cible_3, #PB_Gadget_FrontColor, $007F00)
    SetGadgetColor(#Str_Cible_3, #PB_Gadget_BackColor, $00FFFF)
    For i = 13 To 18
      If GetGadgetText(i) = GetGadgetText(#Str_Cible_3)
        HideGadget(i, 1)
      EndIf
    Next
  EndIf
  If GetGadgetText(#Str_Cible_4) = Source(4)
    SetGadgetColor(#Str_Cible_4, #PB_Gadget_FrontColor, $007F00)
    SetGadgetColor(#str_cible_4, #PB_Gadget_BackColor, $00FFFF)
    For i = 13 To 18
      If GetGadgetText(i) = GetGadgetText(#Str_Cible_4)
        HideGadget(i, 1)
      EndIf
    Next
  EndIf
  If GetGadgetText(#Str_Cible_5) = Source(5)
    SetGadgetColor(#Str_Cible_5, #PB_Gadget_FrontColor, $007F00)
    SetGadgetColor(#str_cible_5, #PB_Gadget_BackColor, $00FFFF)
    For i = 13 To 18
      If GetGadgetText(i) = GetGadgetText(#Str_Cible_5)
        HideGadget(i, 1)
      EndIf
    Next
  EndIf
  If GetGadgetText(#Str_Cible_6) = Source(6)
    SetGadgetColor(#Str_Cible_6, #PB_Gadget_FrontColor, $007F00)
    SetGadgetColor(#str_cible_6, #PB_Gadget_BackColor, $00FFFF)
    For i = 13 To 18
      If GetGadgetText(i) = GetGadgetText(#Str_Cible_6)
        HideGadget(i, 1)
      EndIf
    Next
  EndIf
EndProcedure

Procedure Clic_Btn_Precedant()
  S - 1
  If S = 4
    Restore S5
  ElseIf S = 3
    Restore S4
  ElseIf S = 2
    Restore S3
  ElseIf S = 1
    Restore S2
  ElseIf S = 0
    Restore S1
  Else
    S = 5
    Restore S6
  EndIf
  
  SetGadgetColor(#Str_Cible_1, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_2, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_3, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_4, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_5, #PB_Gadget_FrontColor, 0)  
  SetGadgetColor(#Str_Cible_6, #PB_Gadget_FrontColor, 0)
  
  SetGadgetColor(#Str_Cible_1, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_2, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_3, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_4, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_5, #PB_Gadget_BackColor, $FFFFFF)  
  SetGadgetColor(#Str_Cible_6, #PB_Gadget_BackColor, $FFFFFF)
  
  Lire_les_donnees()
  
  SetGadgetText(#Str_1, Question(0))
  SetGadgetText(#Str_2, Question(1))
  SetGadgetText(#Str_3, Question(2))
  SetGadgetText(#Str_4, Question(3))
  SetGadgetText(#Str_5, Question(4))
  SetGadgetText(#Str_6, Question(5))
  
  
  HideGadget(#Str_Source_1, 0)
  HideGadget(#Str_Source_2, 0)
  HideGadget(#Str_Source_3, 0)
  HideGadget(#Str_Source_4, 0)
  HideGadget(#Str_Source_5, 0)
  HideGadget(#Str_Source_6, 0)
  
  SetGadgetText(#Str_Source_1, Cible(0)\Texte)
  SetGadgetText(#Str_Source_2, Cible(1)\Texte)
  SetGadgetText(#Str_Source_3, Cible(2)\Texte)
  SetGadgetText(#Str_Source_4, Cible(3)\Texte)
  SetGadgetText(#Str_Source_5, Cible(4)\Texte)
  SetGadgetText(#Str_Source_6, Cible(5)\Texte)
  
  SetGadgetText(#Str_Cible_1, "")
  SetGadgetText(#Str_Cible_2, "")
  SetGadgetText(#Str_Cible_3, "")
  SetGadgetText(#Str_Cible_4, "")
  SetGadgetText(#Str_Cible_5, "")
  SetGadgetText(#Str_Cible_6, "")
EndProcedure

Procedure Clic_Btn_Suivant()
  S + 1
  If S = 1
    Restore S2
  ElseIf S = 2
    Restore S3
  ElseIf S = 3
    Restore S4
  ElseIf S = 4
    Restore S5
  ElseIf S = 5
    Restore S6
  Else
    S = 0
    Restore S1
  EndIf
  
  SetGadgetColor(#Str_Cible_1, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_2, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_3, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_4, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_5, #PB_Gadget_FrontColor, 0)  
  SetGadgetColor(#Str_Cible_6, #PB_Gadget_FrontColor, 0)
  
  SetGadgetColor(#Str_Cible_1, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_2, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_3, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_4, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_5, #PB_Gadget_BackColor, $FFFFFF)  
  SetGadgetColor(#Str_Cible_6, #PB_Gadget_BackColor, $FFFFFF)
  
  Lire_les_donnees()
  
  SetGadgetText(#Str_1, Question(0))
  SetGadgetText(#Str_2, Question(1))
  SetGadgetText(#Str_3, Question(2))
  SetGadgetText(#Str_4, Question(3))
  SetGadgetText(#Str_5, Question(4))
  SetGadgetText(#Str_6, Question(5))
  
  HideGadget(#Str_Source_1, 0)
  HideGadget(#Str_Source_2, 0)
  HideGadget(#Str_Source_3, 0)
  HideGadget(#Str_Source_4, 0)
  HideGadget(#Str_Source_5, 0)
  HideGadget(#Str_Source_6, 0)
  
  SetGadgetText(#Str_Source_1, Cible(0)\Texte)
  SetGadgetText(#Str_Source_2, Cible(1)\Texte)
  SetGadgetText(#Str_Source_3, Cible(2)\Texte)
  SetGadgetText(#Str_Source_4, Cible(3)\Texte)
  SetGadgetText(#Str_Source_5, Cible(4)\Texte)
  SetGadgetText(#Str_Source_6, Cible(5)\Texte)
  
  SetGadgetText(#Str_Cible_1, "")
  SetGadgetText(#Str_Cible_2, "")
  SetGadgetText(#Str_Cible_3, "")
  SetGadgetText(#Str_Cible_4, "")
  SetGadgetText(#Str_Cible_5, "")
  SetGadgetText(#Str_Cible_6, "")
EndProcedure

Procedure Quitter()
  CloseWindow(#Fenetre_principale)
  End
EndProcedure

Procedure Ouvrir_Fenetre_principale()
  If OpenWindow(#Fenetre_principale, 479, 41, 1090, 705, "Drag & Drop © Micoute - 13/09/2014", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    SetWindowColor(#Fenetre_principale, $007F00) ;CFCF)
    BindEvent(#PB_Event_CloseWindow, @Quitter(), #Fenetre_principale)
    CanvasGadget(#Cvs, 10, 110, WindowWidth(#Fenetre_principale)-20, WindowHeight(#Fenetre_principale)-170)
    TextGadget(#Txt_Definitions, 20, 10, 200, 40, "Définitions")
    TextGadget(#Txt_Enonce, 0, 65, 1100, 40, "Place chaque mot en face de sa définition avec la souris et clique sur valider", #PB_Text_Center)
    StringGadget(#Str_1, 15, 120, 705, 60, Question(0), #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_2, 15, 185, 705, 60, Question(1), #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_3, 15, 250, 705, 60, Question(2), #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_4, 15, 315, 705, 60, Question(3), #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_5, 15, 380, 705, 60, Question(4), #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_6, 15, 445, 705, 60, Question(5), #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_Cible_1, 725, 120, 350, 60, "", #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_Cible_2, 725, 185, 350, 60, "", #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_Cible_3, 725, 250, 350, 60, "", #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_Cible_4, 725, 315, 350, 60, "", #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_Cible_5, 725, 380, 350, 60, "", #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    StringGadget(#Str_Cible_6, 725, 445, 350, 60, "", #ES_CENTER|#ES_MULTILINE|#WS_BORDER)
    
    Cible(0)\ID = ButtonGadget(#Str_Source_1, Cible(0)\x, Cible(0)\y, Cible(0)\Largeur, Cible(0)\Hauteur, Cible(0)\Texte)
    Cible(1)\ID = ButtonGadget(#Str_Source_2, Cible(1)\x, Cible(1)\y, Cible(1)\Largeur, Cible(1)\Hauteur, Cible(1)\Texte)
    Cible(2)\ID = ButtonGadget(#Str_Source_3, Cible(2)\x, Cible(2)\y, Cible(2)\Largeur, Cible(2)\Hauteur, Cible(2)\Texte)
    Cible(3)\ID = ButtonGadget(#Str_Source_4, Cible(3)\x, Cible(3)\y, Cible(3)\Largeur, Cible(3)\Hauteur, Cible(3)\Texte)
    Cible(4)\ID = ButtonGadget(#Str_Source_5, Cible(4)\x, Cible(4)\y, Cible(4)\Largeur, Cible(4)\Hauteur, Cible(4)\Texte)
    Cible(5)\ID = ButtonGadget(#Str_Source_6, Cible(5)\x, Cible(5)\y, Cible(5)\Largeur, Cible(5)\Hauteur, Cible(5)\Texte)
    
    ButtonGadget(#Btn_Valider, 455, 650, 170, 40, "Valider")
    ButtonGadget(#Btn_Prec, 15, 650, 170, 40, "Précédant")
    ButtonGadget(#Btn_Suiv, 910, 650, 170, 40, "Suivant")
    
    BindGadgetEvent(#Btn_Valider,@Valider())
    BindGadgetEvent(#Btn_Prec,@Clic_Btn_Precedant())
    BindGadgetEvent(#Btn_Suiv,@Clic_Btn_Suivant())
    
    ; Couleurs
    SetGadgetColor(#Txt_Definitions, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
    SetGadgetColor(#Txt_Enonce, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
    SetGadgetColor(#Txt_Definitions, #PB_Gadget_FrontColor, $007FFF)
    SetGadgetColor(#Txt_Enonce, #PB_Gadget_FrontColor, $007FFF)
    ; Fontes
    SetGadgetFont(#Txt_Definitions, LoadFont(#Font_Txt_Definitions, "Arial", 30, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Txt_Enonce, LoadFont(#Font_Txt_Enonce, "Arial", 20, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_1, LoadFont(#Font_Str_1, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_2, LoadFont(#Font_Str_2, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_3, LoadFont(#Font_Str_3, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_4, LoadFont(#Font_Str_4, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_5, LoadFont(#Font_Str_5, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_6, LoadFont(#Font_Str_6, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Cible_1, LoadFont(#Font_rep_1, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Cible_2, LoadFont(#Font_rep_2, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Cible_3, LoadFont(#Font_rep_3, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Cible_4, LoadFont(#Font_rep_4, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Cible_5, LoadFont(#Font_rep_5, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Cible_6, LoadFont(#Font_rep_6, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Source_1, LoadFont(#Font_Source_1, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Source_2, LoadFont(#Font_Source_2, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Source_3, LoadFont(#Font_Source_3, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Source_4, LoadFont(#Font_Source_4, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Source_5, LoadFont(#Font_Source_5, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Str_Source_6, LoadFont(#Font_Source_6, "Arial", 16, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Btn_Valider, LoadFont(#Font_Btn_Valider, "Arial", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Btn_Prec, LoadFont(#Font_Btn_Prec, "Arial", 12, #PB_Font_Bold|#PB_Font_HighQuality))
    SetGadgetFont(#Btn_Suiv, LoadFont(#Font_Btn_Suiv, "Arial", 12, #PB_Font_Bold|#PB_Font_HighQuality))
  EndIf
EndProcedure

Lire_les_donnees()
Ouvrir_Fenetre_principale()

Macro Verifier_Si_Sur_Gadget(ID, x, y)
  (((Not x < Cible(id)\x) & (Not y < Cible(id)\y)) & (Not x >= (Cible(id)\x + Cible(id)\Largeur)) & (Not y >= (Cible(id)\y + Cible(id)\Hauteur)))
EndMacro

Procedure.i Test_d_atteinte(ID, x, y)
  If Verifier_Si_Sur_Gadget(ID, x, y)
    ProcedureReturn #True
  Else
    ProcedureReturn #False
  EndIf
EndProcedure

Procedure DeplacerGadget(ID, x, y)
  Cible(id)\x = GadgetX(Cible(id)\ID)
  Cible(id)\y = GadgetY(Cible(id)\ID)
  ResizeGadget(Cible(id)\ID, x, y, #PB_Ignore, #PB_Ignore)
EndProcedure

;- Boucle principale
Repeat
  Evenement = WaitWindowEvent() 
  Select Evenement
    Case #PB_Event_Gadget
      
      EvenementGadget = EventGadget()
      
      Select EvenementGadget          
        Case #Cvs
          
          TypeEvenement = EventType()
          
          Select TypeEvenement
            Case #PB_EventType_LeftButtonDown
              
              ;Obtenir les coordonnées actuelles de la souris
              cx = WindowMouseX(#Fenetre_principale)
              cy = WindowMouseY(#Fenetre_principale)
              If Test_d_atteinte(0, cx, cy)
                gadx = cx - Cible(0)\x
                gady = cy - Cible(0)\y
                Cible(0)\DeplacementActif = #True
              ElseIf Test_d_atteinte(1, cx, cy)
                gadx = cx - Cible(1)\x
                gady = cy - Cible(1)\y
                Cible(1)\DeplacementActif = #True
              ElseIf Test_d_atteinte(2, cx, cy)  
                gadx = cx - Cible(2)\x
                gady = cy - Cible(2)\y
                Cible(2)\DeplacementActif = #True
              ElseIf Test_d_atteinte(3, cx, cy)  
                gadx = cx - Cible(3)\x
                gady = cy - Cible(3)\y
                Cible(3)\DeplacementActif = #True
              ElseIf Test_d_atteinte(4, cx, cy)  
                gadx = cx - Cible(4)\x
                gady = cy - Cible(4)\y
                Cible(4)\DeplacementActif = #True
              ElseIf Test_d_atteinte(5, cx, cy)  
                gadx = cx - Cible(5)\x
                gady = cy - Cible(5)\y
                Cible(5)\DeplacementActif = #True
              EndIf
              
            Case #PB_EventType_LeftButtonUp    
              Cible(0)\DeplacementActif = #False
              Cible(0)\x = GadgetX(Cible(0)\ID)
              Cible(0)\y = GadgetY(Cible(0)\ID)                
              
              Cible(1)\DeplacementActif = #False
              Cible(1)\x = GadgetX(Cible(1)\ID)
              Cible(1)\y = GadgetY(Cible(1)\ID)
              
              Cible(2)\DeplacementActif = #False
              Cible(2)\x = GadgetX(Cible(2)\ID)
              Cible(2)\y = GadgetY(Cible(2)\ID)
              
              Cible(3)\DeplacementActif = #False
              Cible(3)\x = GadgetX(Cible(3)\ID)
              Cible(3)\y = GadgetY(Cible(3)\ID)
              
              Cible(4)\DeplacementActif = #False
              Cible(4)\x = GadgetX(Cible(4)\ID)
              Cible(4)\y = GadgetY(Cible(4)\ID)
              
              Cible(5)\DeplacementActif = #False
              Cible(5)\x = GadgetX(Cible(5)\ID)
              Cible(5)\y = GadgetY(Cible(5)\ID)
              
            Case #PB_EventType_MouseMove 
              If Cible(0)\DeplacementActif
                ;Obtenir les coordonnées actuelles de la souris
                cx = WindowMouseX(#Fenetre_principale)
                cy = WindowMouseY(#Fenetre_principale)
                If cx > -1 And cy > -1 
                  DeplacerGadget(0, cx - gadx,cy - gady)
                EndIf
              EndIf
              
              If Cible(1)\DeplacementActif
                ;Obtenir les coordonnées actuelles de la souris
                cx = WindowMouseX(#Fenetre_principale)
                cy = WindowMouseY(#Fenetre_principale)
                If cx > -1 And cy > -1 
                  DeplacerGadget(1, cx - gadx,cy - gady)
                EndIf
              EndIf
              
              If Cible(2)\DeplacementActif
                ;Obtenir les coordonnées actuelles de la souris
                cx = WindowMouseX(#Fenetre_principale)
                cy = WindowMouseY(#Fenetre_principale)
                If cx > -1 And cy > -1 
                  DeplacerGadget(2, cx - gadx,cy - gady)
                EndIf
              EndIf
              
              If Cible(3)\DeplacementActif
                ;Obtenir les coordonnées actuelles de la souris
                cx = WindowMouseX(#Fenetre_principale)
                cy = WindowMouseY(#Fenetre_principale)
                If cx > -1 And cy > -1 
                  DeplacerGadget(3, cx - gadx,cy - gady)
                EndIf
              EndIf
              
              If Cible(4)\DeplacementActif
                ;Obtenir les coordonnées actuelles de la souris
                cx = WindowMouseX(#Fenetre_principale)
                cy = WindowMouseY(#Fenetre_principale)
                If cx > -1 And cy > -1 
                  DeplacerGadget(4, cx - gadx,cy - gady)
                EndIf
              EndIf
              
              If Cible(5)\DeplacementActif
                ;Obtenir les coordonnées actuelles de la souris
                cx = WindowMouseX(#Fenetre_principale)
                cy = WindowMouseY(#Fenetre_principale)
                If cx > -1 And cy > -1 
                  DeplacerGadget(5, cx - gadx,cy - gady)
                EndIf
              EndIf
              
          EndSelect ;TypeEvenement
          
          
      EndSelect ;EvenementGadget
      
  EndSelect ;Evenement
  
Until Evenement = #PB_Event_CloseWindow

; Données
DataSection
  S1: :Data.s "Habitude, manière de faire qui se transmet depuis très longtemps.","une tradition",
              "Herbe courte et fine.","un gazon",
              "Long vêtement sans manche que l'on porte sur les épaules.","une cape",
              "Outil à manche en bois et à tête d'acier qui sert à frapper.","un marteau",
              "Repos que l'on prend après le repas de midi.","une sieste",
              "Avantage remporté sur les ennemis dans une guerre.","une victoire"
  S2: :Data.s "Plante potagère dont la racine est comestible.", "une carotte",
              "Bande de cuir, d'étoffe, etc..., dont on s'entoure la taille.", "une ceinture",
              "Passage étroit et long dans une maison.", "un couloir",
              "Art de combiner les sons.", "la musique",
              "Jour de la semaine.", "un dimanche",
              "Nourriture que l'on prend à certaines heures réglèes de la journée.", "un repas"
  S3: :Data.s "Qui est proche, qui demeure près de ...", "un voisin",
              "Ustensile de table pour porter à la bouche les aliments liquides.", "une cuillère",
              "Appareil de prise de vue utilisé pour le cinéma et la télévision.", "une caméra",
              "Coffre de bois pour le transport et la conservation de marchandises.", "une caisse",
              "Vêtement féminin plus ou moins long et d'un seul tenant.", "une robe",
              "Potage épais.", "une soupe"
  S4: :Data.s "Ensemble de page reliées entre elles.", "un livre",
              "Instrument qui permet d'ouvrir et de fermer une porte.", "une clé",
              "Pendule qui sonne à une heure déterminée à l'avance.", "un réveil",
              "Appareil utilisé par 2 personnes, pour mener une conversation à distance.", "un téléphone",
              "Appareil de cuisine équipé d'un four.", "une cuisinière",
              "Espace qui sépare un lieu d'un autre.", "une distance"
  S5: :Data.s "Culotte qui couvre entièrement les jambes.", "un pantalon",
              "Personne élue pour diriger les affaires de la commune.", "un maire",
              "Tour la plus haute et la plus importante d'un château fort.", "un donjon",
              "Les irrégularités de la surface terrestre.", "le relief",
              "Petit couteau de poche dont la lame se replie.", "un canif","Solide à angles droits et à six faces.", "un cube"
  S6: :Data.s "Ustensile servant à égoutter.","une passoire",
              "Grande cuillère munie q'un lonf manche pour servir le potage.","une louche",
              "Verre à anse pour boire la bière.","une chope",
              "Plat creux pour servir la salade.","un saladier",
              "Récipient avec une bec verseur et anse pour servir les liquides.","une cruche",
              "Récipient avec lequel on sert le sel.","une salière"
EndDataSection
Dernière modification par Micoute le jeu. 28/janv./2016 9:47, 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
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Le #gadget spécifié n'est pas initialisé.

Message par GallyHC »

Bonjour Micoute,

Bon tu "Micoute bien" (c'est juste de l'humour, y a pas mal de temps que je penses à la faire ^^). Sinon tu mélanges les ID et le résultat, dans ton cas :

Code : Tout sélectionner

    Cible(0)\ID = ButtonGadget(#Str_Source_1, Cible(0)\x, Cible(0)\y, Cible(0)\Largeur, Cible(0)\Hauteur, Cible(0)\Texte)
"Cible(0)\ID" n'est pas l'ID du gadget mais un résultat pour dire qu'il est bien créer.

Pour avoir un vrai ID, il faut Utiliser "#PB_Any", comme ceci :

Code : Tout sélectionner

    Cible(0)\ID = ButtonGadget(#PB_Any, Cible(0)\x, Cible(0)\y, Cible(0)\Largeur, Cible(0)\Hauteur, Cible(0)\Texte)
Ou dans ton cas tu ne met pas "Cible(0)\ID" mais "#Str_Source_1".

Petit extrait de la doc pour "ButtonGadget()" :
Valeur de retour

Renvoie une valeur non nulle en cas de succès, zéro sinon.

Si #PB_Any a été utilisé pour le paramètre #Gadget, alors la valeur de retour est le numéro d'identification du gadget, généré automatiquement.
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Le #gadget spécifié n'est pas initialisé.

Message par falsam »

Tout est dit. :)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Le #gadget spécifié n'est pas initialisé.

Message par Micoute »

Merci pour la réponse, je vais refaire la visite de mon programme de vérification des bonnes réponses.
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 !
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Le #gadget spécifié n'est pas initialisé.

Message par Marc56 »

Bonjour Micoute,

Tu es sur de ce que tu veux faire ligne 337 ? (avec '&' ?)

Code : Tout sélectionner

(((Not x < Cible(id)\x) & (Not y < Cible(id)\y)) & (Not x >= (...
& en PureBasic est un opérateur binaire, ce n'est pas l'équivalent de AND qui est un opérateur logique.
(Dans d'autres langages '&' est l'opérateur de concaténation, donc on confond aussi parfois en passant de l'un à l'autre)
http://www.purebasic.com/french/documen ... ables.html

Autre truc:
Un peu partout tu peux aérer et donc rendre ton code plus facile à maintenir en utilisant with

Code : Tout sélectionner

Cible(0)\ID = ButtonGadget(#PB_Any, Cible(0)\x, Cible(0)\y, Cible(0)\Largeur, Cible(0)\Hauteur, Cible(0)\Texte)
Peut s'écrire

Code : Tout sélectionner

With Cible(0)
    \ID = ButtonGadget(#PB_Any, \x, \y, \Largeur, \Hauteur, \Texte)
EndWith
:wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Le #gadget spécifié n'est pas initialisé.

Message par Ar-S »

Petite parenthèse, lorsque tes gadgets se suivent dans les énumérations, n'ai pas peur non plus de faire des boucles FOR NEXT pour alléger ton code, il n'en sera que plus lisible
Ton code regorge de de trucs dans le genre. Tu pourrais gagner pas mal de place.
ex :

Code : Tout sélectionner

For i = #Str_Cible_1 To #Str_Cible_6
  SetGadgetColor(i, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(i, #PB_Gadget_BackColor, $FFFFFF)
Next

; au lieu de 

SetGadgetColor(#Str_Cible_1, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_2, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_3, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_4, #PB_Gadget_FrontColor, 0)
  SetGadgetColor(#Str_Cible_5, #PB_Gadget_FrontColor, 0) 
  SetGadgetColor(#Str_Cible_6, #PB_Gadget_FrontColor, 0)
 
  SetGadgetColor(#Str_Cible_1, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_2, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_3, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_4, #PB_Gadget_BackColor, $FFFFFF)
  SetGadgetColor(#Str_Cible_5, #PB_Gadget_BackColor, $FFFFFF) 
  SetGadgetColor(#Str_Cible_6, #PB_Gadget_BackColor, $FFFFFF)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Le #gadget spécifié n'est pas initialisé.

Message par Micoute »

Bonsoir à tous,

comme je le pensais, maintenant je ne peux plus faire le tour des gadgets créés avec #PB_Any pour comparer la bonne réponse et la réponse proposée.

Avant je faisais une boucle For X = #Str_Source_1 To #Str_Source_6 et je comparais si GetGadgetText(#Str_Cible_1) = Source(1), etc... maintenant je suis bloqué.

Peut-être avez-vous une solution à me proposer, je ne vous en remercierais jamais assez.
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
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Le #gadget spécifié n'est pas initialisé.

Message par GallyHC »

et comme cela ?

Code : Tout sélectionner

Structure GadgetUtilise
  ID.l
  x.l 
  y.l 
  Largeur.i
  Hauteur.i 
  DeplacementActif.i
  Texte.s
EndStructure

Global Dim Cible.GadgetUtilise(5)

;
;
;

Define.i tlen = ArraySize(Cible()) ; Taille du tableau

For i=0 To tlen
  Debug Cible(i)\ID
Next i
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Le #gadget spécifié n'est pas initialisé.

Message par Micoute »

Oui, ça me donne l'adresse de chaque Cible(), mais je ne vois pas ce que je peux en tirer.
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
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Le #gadget spécifié n'est pas initialisé.

Message par GallyHC »

Voila comment faire :

Code : Tout sélectionner

Structure GadgetUtilise
  ID.l
  x.l 
  y.l 
  Largeur.i
  Hauteur.i 
  DeplacementActif.i
  Texte.s
EndStructure

Global Dim Cible.GadgetUtilise(5)

;
;
;

Define.i i, tlen = ArraySize(Cible())

For i=0 To tlen
  Cible(i)\Texte = "Texte " + Str(i)
Next i

;
;
;

If OpenWindow(0, 100, 200, 195, 260, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)

  Cible(0)\ID = ButtonGadget(#PB_Any, Cible(0)\x, Cible(0)\y, Cible(0)\Largeur, Cible(0)\Hauteur, Cible(0)\Texte)
  Cible(1)\ID = ButtonGadget(#PB_Any, Cible(1)\x, Cible(1)\y, Cible(1)\Largeur, Cible(1)\Hauteur, Cible(1)\Texte)
  Cible(2)\ID = ButtonGadget(#PB_Any, Cible(2)\x, Cible(2)\y, Cible(2)\Largeur, Cible(2)\Hauteur, Cible(2)\Texte)
  Cible(3)\ID = ButtonGadget(#PB_Any, Cible(3)\x, Cible(3)\y, Cible(3)\Largeur, Cible(3)\Hauteur, Cible(3)\Texte)
  Cible(4)\ID = ButtonGadget(#PB_Any, Cible(4)\x, Cible(4)\y, Cible(4)\Largeur, Cible(4)\Hauteur, Cible(4)\Texte)
  Cible(5)\ID = ButtonGadget(#PB_Any, Cible(5)\x, Cible(5)\y, Cible(5)\Largeur, Cible(5)\Hauteur, Cible(5)\Texte)

  For i=0 To tlen
    Debug "Texte = " + GetGadgetText(Cible(i)\ID)
  Next i

  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

End
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Le #gadget spécifié n'est pas initialisé.

Message par Micoute »

C'est très bon ton système, mais ça ne fonctionne pas avec le mien, car la valeur dans une cible donnée est aléatoire et la valeur dans la source l'est aussi, mais l'énumération n'a pas le même pas pour la source et la cible, donc je ne peux pas utiliser un compteur commun.
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: Le #gadget spécifié n'est pas initialisé.

Message par Micoute »

Bonjour à tous,

j'ai finalement trouvé la solution, je cherchais à comparer le texte des gadgets alors qu'il fallait comparer leurs coordonnées x et y.

Merci tout de même pour m'avoir permis d'avancer.
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 !
Marc56
Messages : 2198
Inscription : sam. 08/févr./2014 15:19

Re: Le #gadget spécifié n'est pas initialisé.

Message par Marc56 »

Code : Tout sélectionner

  
  Cible(0)\ID = ButtonGadget(#PB_Any, Cible(0)\x, Cible(0)\y, Cible(0)\Largeur, Cible(0)\Hauteur, Cible(0)\Texte)
  Cible(1)\ID = ButtonGadget(#PB_Any, Cible(1)\x, Cible(1)\y, Cible(1)\Largeur, Cible(1)\Hauteur, Cible(1)\Texte)
  Cible(2)\ID = ButtonGadget(#PB_Any, Cible(2)\x, Cible(2)\y, Cible(2)\Largeur, Cible(2)\Hauteur, Cible(2)\Texte)
  Cible(3)\ID = ButtonGadget(#PB_Any, Cible(3)\x, Cible(3)\y, Cible(3)\Largeur, Cible(3)\Hauteur, Cible(3)\Texte)
  Cible(4)\ID = ButtonGadget(#PB_Any, Cible(4)\x, Cible(4)\y, Cible(4)\Largeur, Cible(4)\Hauteur, Cible(4)\Texte)
  Cible(5)\ID = ButtonGadget(#PB_Any, Cible(5)\x, Cible(5)\y, Cible(5)\Largeur, Cible(5)\Hauteur, Cible(5)\Texte)
Plus lisible:

Code : Tout sélectionner

For i = 0 To 5
    With Cible(i) 
        \ID = ButtonGadget(#PB_Any, \x, \y, \Largeur, \Hauteur, \Texte)
    EndWith
Next i
Ou même, dans les cas simples (quand un bloc de code ne risque pas de poser problème "erreur à la ligne xx")

Code : Tout sélectionner

For i = 0 To 5 : With Cible(i) : \ID = ButtonGadget(#PB_Any, \x, \y, \Largeur, \Hauteur, \Texte) : EndWith : Next i
:wink:
Répondre