Gadgets

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
gilles robert
Messages : 24
Inscription : jeu. 15/avr./2004 14:56

Gadgets

Message par gilles robert »

Bonjour,

J'ai des problèmes avec mes gadgets.

Voici un petit programme qui ne marche pas et je ne sais pas pourquoi.

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #Button_0
EndEnumeration

t=10
Dim longueur$(t) : Dim largeur$(t) : Dim hauteur$(t)


  If OpenWindow(#Window_0, 216, 0, 371, 195, "Test1",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      TextGadget(#Text_1, 100, 10, 110, 20, "TEST1", #PB_Text_Center)
      TextGadget(#Text_2, 10, 50, 70, 20, "Longueur")
      TextGadget(#Text_3, 10, 80, 70, 20, "Largeur")
      TextGadget(#Text_4, 10, 110, 70, 20, "Hauteur")
      StringGadget(1, 100, 50, 90, 20, "")
      StringGadget(2, 100, 80, 90, 20, "")
      StringGadget(3, 100, 110, 90, 20, "")
      ButtonGadget(#Button_0, 120, 150, 50, 20, "Garder")
    Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        Case #Button_0
          CloseWindow(#Window_0)
          Gosub recuperer : Gosub montrer
      EndSelect
    EndIf
    Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
  End
  
  recuperer:
  j=1
  For i=1 To 3
    Select i
      Case 1 :longueur$(j)=GetGadgetText(i)
      Case 2 :largeur$(j)=GetGadgetText(i)
      Case 3 :hauteur$(j)=GetGadgetText(i)
    EndSelect
  Next i
  Return
  
  montrer:
  Debug "Longueur: "+longueur$(j)
  Debug "Largeur: "+largeur$(j)
  Debug "Hauteur: "+hauteur$(j)
  Return
  
Les Textgadgets ne sont pas affichés.
Les getgadgetstext ne récupèrent pas les infos je reçois l'erreur Le #Gadget spécifié n'est pas initialisé.
quelle est mon erreur :?:

Gilles
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: Gadgets

Message par Cls »

Salut,
à la vue de ton code, tes identifiants de StringGadget écrasent ceux de tes TextGadget. Il suffit de remplacer 1, 2, 3 par #String_1, #String_2, #String_3 et de les rajouter à ton énumération.
gilles robert
Messages : 24
Inscription : jeu. 15/avr./2004 14:56

Re: Gadgets

Message par gilles robert »

Merci, cela resoud le probleme des textgadgets mais la récupération ne s'effectue toujours pas.
Comment se fait il qu'il faille appuyer plusieurs fois sur garder pour qu'il agisse?

Gilles

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #String_1
  #String_2
  #String_3
  #Button_0
EndEnumeration

t=10
Dim longueur$(t) : Dim largeur$(t) : Dim hauteur$(t)


  If OpenWindow(#Window_0, 216, 0, 371, 195, "Test1",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      TextGadget(#Text_1, 100, 10, 110, 20, "TEST1", #PB_Text_Center)
      TextGadget(#Text_2, 10, 50, 70, 20, "Longueur")
      TextGadget(#Text_3, 10, 80, 70, 20, "Largeur")
      TextGadget(#Text_4, 10, 110, 70, 20, "Hauteur")
      StringGadget(#String_1, 100, 50, 90, 20, "")
      StringGadget(#String_2, 100, 80, 90, 20, "")
      StringGadget(#String_3, 100, 110, 90, 20, "")
      ButtonGadget(#Button_0, 120, 150, 50, 20, "Garder")
    Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        Case #Button_0
          CloseWindow(#Window_0)
          Gosub recuperer : Gosub montrer
      EndSelect
    EndIf
    Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
  End
  
  recuperer:
  j=1
  For i=1 To 3
    Select i
      Case #String_1 :longueur$(j)=GetGadgetText(i)
      Case #String_2 :largeur$(j)=GetGadgetText(i)
      Case #String_3 :hauteur$(j)=GetGadgetText(i)
    EndSelect
  Next i
  Return
  
  montrer:
  Debug "Longueur: "+longueur$(j)
  Debug "Largeur: "+largeur$(j)
  Debug "Hauteur: "+hauteur$(j)
  Return
  
Avatar de l’utilisateur
Mindphazer
Messages : 695
Inscription : mer. 24/août/2005 10:42

Re: Gadgets

Message par Mindphazer »

Tu fais ta fermeture de fenêtre avant de récupérer le contenu de tes gadgets.
Fais le contraire
Et ferme ta fenêtre lorsque tu quittes le programme.

Et puis au lieu d'utiliser des "gosub etiquette:", essaie plutôt de faire des procédures.
C'est plus... moderne.....
Bureau : Win10 64bits
Maison : Macbook Pro M3 16" SSD 512 Go / Ram 24 Go - iPad Pro 32 Go (pour madame) - iPhone 15 Pro Max 256 Go
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: Gadgets

Message par Geo Trouvpatou »

Salut.

Regarde les modifs et essaie de comprendre.
Le mieux est de mettre EnableExplicit en début de code pour s'éviter bien des problèmes.

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

EnableExplicit  ;<--- A METTRE

;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #Text_1
  #Text_2
  #Text_3
  #Text_4
  #String_1
  #String_2
  #String_3
  #Button_0
EndEnumeration

Global t.i = 10, EventID.i, i.i, j.i


Dim longueur$(t) : Dim largeur$(t) : Dim hauteur$(t)


  If OpenWindow(#Window_0, 216, 0, 371, 195, "Test1",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      TextGadget(#Text_1, 100, 10, 110, 20, "TEST1", #PB_Text_Center)
      TextGadget(#Text_2, 10, 50, 70, 20, "Longueur")
      TextGadget(#Text_3, 10, 80, 70, 20, "Largeur")
      TextGadget(#Text_4, 10, 110, 70, 20, "Hauteur")
      StringGadget(#String_1, 100, 50, 90, 20, "")
      StringGadget(#String_2, 100, 80, 90, 20, "")
      StringGadget(#String_3, 100, 110, 90, 20, "")
      ButtonGadget(#Button_0, 120, 150, 50, 20, "Garder")
    Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        Case #Button_0
              ;CloseWindow(#Window_0) <------ A VIRER
              
          Gosub recuperer : Gosub montrer
      EndSelect
    EndIf
    Until WaitWindowEvent()=#PB_Event_CloseWindow
  EndIf
  End
 
  recuperer:
  j=1
  For i=1 To 20 ; <-- pour que ça fonctionne faut au moin atteindre 6 pour la valeur de #String_3
    Select i
      Case #String_1 :longueur$(j)=GetGadgetText(i) ; <--#String_1 = 4
      Case #String_2 :largeur$(j)=GetGadgetText(i) ; <-- #String_2 = 5
      Case #String_3 :hauteur$(j)=GetGadgetText(i) ; <-- #String_3 = 6
    EndSelect
  Next i
  Return
 
  montrer:
  Debug "Longueur: "+longueur$(j)
  Debug "Largeur: "+largeur$(j)
  Debug "Hauteur: "+hauteur$(j)
  Return
Comme déjà dit les procédures c'est tellement plus moderne et pour ce que cela coûte.

Code : Tout sélectionner

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

EnableExplicit  ;<--- A METTRE

;- Window Constants
;
Enumeration
      #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
      #Text_1
      #Text_2
      #Text_3
      #Text_4
      #String_1
      #String_2
      #String_3
      #Button_0
EndEnumeration

Global t.i = 10, EventID.i, i.i, j.i
Declare recuperer()
Declare montrer()

Global Dim longueur$(t)  
Global Dim largeur$(t)  
Global Dim hauteur$(t)


If OpenWindow(#Window_0, 216, 0, 371, 195, "Test1",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
      TextGadget(#Text_1, 100, 10, 110, 20, "TEST1", #PB_Text_Center)
      TextGadget(#Text_2, 10, 50, 70, 20, "Longueur")
      TextGadget(#Text_3, 10, 80, 70, 20, "Largeur")
      TextGadget(#Text_4, 10, 110, 70, 20, "Hauteur")
      StringGadget(#String_1, 100, 50, 90, 20, "")
      StringGadget(#String_2, 100, 80, 90, 20, "")
      StringGadget(#String_3, 100, 110, 90, 20, "")
      ButtonGadget(#Button_0, 120, 150, 50, 20, "Garder")
      Repeat
            EventID = WaitWindowEvent()

            If EventID = #PB_Event_Gadget
                  Select EventGadget()
                        Case #Button_0
                              ;CloseWindow(#Window_0) <------ A VIRER
                              
                              ;Gosub recuperer : Gosub montrer
                              recuperer()
                              montrer()
                  EndSelect
            EndIf
      Until EventID = #PB_Event_CloseWindow

EndIf
End

Procedure recuperer()
      j=1
      For i=1 To 20 ; <-- pour que ça fonctionne faut au moin atteindre 6 pour la valeur de #String_3
            Select i
                  Case #String_1 :longueur$(j)=GetGadgetText(i) ; <--#String_1 = 4
                  Case #String_2 :largeur$(j)=GetGadgetText(i) ; <-- #String_2 = 5
                  Case #String_3 :hauteur$(j)=GetGadgetText(i) ; <-- #String_3 = 6
            EndSelect
      Next i
EndProcedure

Procedure montrer()
      Debug "Longueur: "+longueur$(j)
      Debug "Largeur: "+largeur$(j)
      Debug "Hauteur: "+hauteur$(j)
EndProcedure
Tu aurais aussi pu combiner les 2 procédures en 1 seule

Code : Tout sélectionner

Procedure recuperer()
      j=1
      For i=1 To 20 ; <-- pour que ça fonctionne faut au moin atteindre 6 pour la valeur de #String_3
            Select i
                  Case #String_1 :longueur$(j)=GetGadgetText(i) ; <--#String_1 = 4
                        Debug "Longueur: "+longueur$(j)
                  Case #String_2 :largeur$(j)=GetGadgetText(i) ; <-- #String_2 = 5
                        Debug "Largeur: "+largeur$(j)
                  Case #String_3 :hauteur$(j)=GetGadgetText(i) ; <-- #String_3 = 6
                        Debug "Hauteur: "+hauteur$(j)
            EndSelect
      Next i
EndProcedure
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Gadgets

Message par Ar-S »

Grillé par Geo...

Bon je poste mon code tout de même.
Je n'ai pas mis les DIM volontairement pour ne pas t'embrouiller. Ce qui compte c'est l'agencement.

Code : Tout sélectionner

quite=1
If OpenWindow(0, 216, 0, 371, 195, "Test1",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar ) 
	TextGadget(1, 10, 110, 20, 20, "TEST1", #PB_Text_Center) 
	TextGadget(2, 10, 50, 70, 20, "Longueur") 
	TextGadget(3, 10, 80, 70, 20, "Largeur") 
	TextGadget(4, 10, 110, 70, 20, "Hauteur") 
	StringGadget(5, 100, 50, 90, 20, "") 
	StringGadget(6, 100, 80, 90, 20, "") 
	StringGadget(7, 100, 110, 90, 20, "") 
	ButtonGadget(8, 120, 150, 50, 20, "Garder") 
  
  
	Repeat 
    Select WaitWindowEvent()
        
      Case #PB_Event_Gadget
        Select EventGadget()
            
          Case 8 
            longueur$=GetGadgetText(5) 
            largeur$=GetGadgetText(6) 
            hauteur$=GetGadgetText(7)
            
            Debug longueur$
            Debug largeur$
            Debug hauteur$
            
        EndSelect 
        
      Case #PB_Event_CloseWindow ; si clic sur la croix
        Select EventWindow() ; De quelle fenêtre ?
          Case 0 ; de la 0
            quite=0
        EndSelect
        
    EndSelect 
  Until quite=0
  CloseWindow(0) ; alors ferme 0
  End ; bing !
Else
  End
EndIf 
~~~~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
gilles robert
Messages : 24
Inscription : jeu. 15/avr./2004 14:56

Re: Gadgets

Message par gilles robert »

Merci, c'est mieux comme ça.

Gilles
Répondre