pour les besoin d'un programme que j'ai en projet, j'aurais besoin de plusieurs spingadgets éditables et comme ils ne le sont pas en natif, j'ai donc essayé d'en créer, mais comme vous l'avez compris : je suis dépassé et c'est sûrement lié à l'âge, mon but étant de faire une liste de SpinGadget, mais facile à utiliser.
C'est pourquoi je viens solliciter votre aide bienveillante pour résoudre mon problème et je vous en remercie d'avance.
Code : Tout sélectionner
Enumeration Fenetre
#Fenetre_principale
EndEnumeration
Enumeration Gadgets
#Cnv_Plus
#Cnv_Moins
#Cnv_Valeur
#Tempo
EndEnumeration
Structure Spin
Id.i
X.i
Y.i
L.i
H.i
EndStructure
Global Nombre.l, repetitionPlus.l, repetitionMoins.l, NewList ListeSpin.Spin()
Procedure plus()
Nombre = Val(GetGadgetText(#Cnv_Valeur))
Nombre = Nombre + 1
SetGadgetText(#Cnv_Valeur, Str(Nombre))
EndProcedure
Procedure moins()
Nombre = Val(GetGadgetText(#Cnv_Valeur))
Nombre = Nombre - 1
SetGadgetText(#Cnv_Valeur, Str(Nombre))
EndProcedure
Procedure CreerSpin(Id, x, y, l, h)
AddElement(ListeSpin())
With ListeSpin()
\Id = Id
\X = x
\Y = y
\L = l
\H = h
CanvasGadget(#Cnv_Plus+\Id, \x+\l, \y, 15, \h/2, #PB_Canvas_Border)
CanvasGadget(#Cnv_Moins+\Id, \x+l, \y+\h/2, 15, \h/2, #PB_Canvas_Border)
StringGadget(#Cnv_Valeur+\Id, \x, \y, \l, \h, "", #PB_Text_Right)
StartDrawing(CanvasOutput(#Cnv_Plus+\Id))
DrawText(2, -1, "+", $0, $ffffff)
StopDrawing()
StartDrawing(CanvasOutput(#Cnv_Moins+\Id))
DrawText(3, -1, "-", $0, $ffffff)
StopDrawing()
EndWith
EndProcedure
If OpenWindow(#Fenetre_principale, 500, 500, 160, 40, "SpinCanvasGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
CreerSpin(0, 0, 0, 60, 30)
CreerSpin(1, 80,0, 60, 30)
For i = #Cnv_Plus To #Cnv_Valeur
SetGadgetFont(i, FontID(LoadFont(#PB_Any, "Arial Black", 12)))
Next i
AddWindowTimer(#Fenetre_principale, #Tempo, 500)
Repeat
event = WaitWindowEvent()
gadget = EventGadget()
type = EventType()
Select event
Case #PB_Event_Timer
Select EventTimer()
Case #Tempo ; numero du timer
If repetitionPlus
plus()
ElseIf repetitionMoins
moins()
EndIf
EndSelect
Case #PB_Event_Gadget
Select Gadget
Case #Cnv_Plus ; canvas +
Select type
Case #PB_EventType_LeftButtonDown
repetitionPlus = 1
plus()
Case #PB_EventType_LeftButtonUp
repetitionPlus = 0
EndSelect
Case #Cnv_Moins ; canvas -
Select type
Case #PB_EventType_LeftButtonDown
repetitionMoins = 1
moins()
Case #PB_EventType_LeftButtonUp
repetitionMoins = 0
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf