Page 1 sur 1

SpinGadget Wheel

Publié : sam. 28/sept./2013 14:06
par kernadec
bonjour
Petit essai SpinGadget et wheelmouse inspire du code de Fred : http://www.purebasic.fr/english/viewtop ... 12&t=52992

Cordialement

Code : Tout sélectionner

Procedure ScrollbarEvent()
  Debug "Date: "+GetGadgetState(0)+"/"+GetGadgetState(1)+"/"+GetGadgetState(2)
EndProcedure

If OpenWindow(0, 0, 0, 160, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SpinGadget     (0, 20, 20, 36, 20, 1, 31)
  SetGadgetState (0, 1) : SetGadgetText(0, "28")        ; définit la valeur initiale du jour
  SpinGadget     (1, 60, 20, 36, 20, 1, 12)
  SetGadgetState (1, 1) : SetGadgetText(1, "9")         ; définit la valeur initiale du mois
  SpinGadget     (2, 100, 20, 56, 20, 2000, 2050)
  SetGadgetState (2, 2013) : SetGadgetText(2, "2013")   ; définit la valeur initiale de l'année
  SetActiveGadget(0)
  BindGadgetEvent(0, @ScrollbarEvent())
  BindGadgetEvent(1, @ScrollbarEvent())
  BindGadgetEvent(2, @ScrollbarEvent())
  Repeat
    Evenement = WaitWindowEvent()  ;SpinGadget wheel mouse
    If Evenement = #PB_Event_Gadget
      If EventGadget() = 0
        SetGadgetText(0,Str(GetGadgetState(0)))
      EndIf
      If EventGadget() = 1
        SetGadgetText(1,Str(GetGadgetState(1)))
      EndIf
      If EventGadget() = 2
        SetGadgetText(2,Str(GetGadgetState(2)))
      EndIf
    EndIf
  Until Evenement = #PB_Event_CloseWindow
EndIf

Re: SpinGadget Wheel

Publié : sam. 28/sept./2013 14:26
par Backup
pas mal :)

autant avoir la date du jour en premier :

Code : Tout sélectionner

Procedure ScrollbarEvent()
	Debug "Scroll: "+GetGadgetState(0)
EndProcedure


If OpenWindow(0, 0, 0, 160, 70, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	d$=FormatDate("%dd/%mm/%yyyy", Date())
	
	SpinGadget     (0, 20, 20, 36, 20, 1, 31)
	SetGadgetState(0, val(stringfield(d$,1,"/")))        ; définit la valeur initiale du jour
	SpinGadget     (1, 60, 20, 36, 20, 1, 12)
	SetGadgetState(1, val(stringfield(d$,2,"/")) )      ; définit la valeur initiale du mois
	SpinGadget     (2, 100, 20, 56, 20, 2000, 2050)
	SetGadgetState(2,val(stringfield(d$,3,"/")) )  ; définit la valeur initiale de l'année
	
	SetActiveGadget(0)
	SetActiveGadget(1)
	SetActiveGadget(2)
	BindGadgetEvent(0, @ScrollbarEvent())
	Repeat
		Evenement = WaitWindowEvent()  ;SpinGadget wheel mouse
		If Evenement = #PB_Event_Gadget
			If EventGadget() = 0
				SetGadgetText(0,Str(GetGadgetState(0)))
			EndIf
			If EventGadget() = 1
				SetGadgetText(1,Str(GetGadgetState(1)))
			EndIf
			If EventGadget() = 2
				SetGadgetText(2,Str(GetGadgetState(2)))
			EndIf
		EndIf
	Until Evenement = #PB_Event_CloseWindow
EndIf; EPB

Re: SpinGadget Wheel

Publié : sam. 28/sept./2013 14:30
par MLD
Super Kernadec

Re: SpinGadget Wheel

Publié : sam. 28/sept./2013 16:18
par falsam
Merci Kernadec pour cette démonstration mettant en oeuvre la fonction BindGadgetEvent() qui n’existait pas dans la version 5.11 de Pure Basic.

Re: SpinGadget Wheel

Publié : sam. 28/sept./2013 17:04
par blendman
oui, les BiendEvent() c'est vraiment intéressant dans certains cas (pour les scrollbar, scrollarea etc ).

Tu devrais mettre cette astuces dans "trucs et astuces", plutôt qu'en débutant ;).

Re: SpinGadget Wheel

Publié : lun. 30/sept./2013 12:03
par Kwai chang caine
blendman a écrit :oui, les BiendEvent() c'est vraiment intéressant dans certains cas (pour les scrollbar, scrollarea etc ).
Merci KERNADEC 8)
Juste un truc qui m'a encore échappé et si "quinquin" y peut m'expliquer :oops:
Quel est la difference avec une callback puisque je suppose qu'on peut faire la même chose avec elle ??

Re: SpinGadget Wheel

Publié : lun. 30/sept./2013 13:42
par Backup
Kwai chang caine a écrit :Quel est la difference avec une callback puisque je suppose qu'on peut faire la même chose avec elle ??
peut etre le multi OS ??

Re: SpinGadget Wheel

Publié : lun. 30/sept./2013 17:20
par Kwai chang caine
D'accord en fin de compte la même chose que la callback mais en natif :D
Merci SPOCK 8)

Re: SpinGadget Wheel

Publié : lun. 30/sept./2013 21:57
par Backup
je dirai que le callback est plus generale ...

alors que le BindGadgetEvent(0, .... est ciblé sur un gadget ...

les callback sont utiles pour tout les evenements de deplacement, souris, redraw etc ... :)

Re: SpinGadget Wheel

Publié : mar. 01/oct./2013 16:03
par Kwai chang caine
Oui exact..j'avais pas saisi le caractere de la gestion unique de chaque gadget...
Et ben....au fil des années ça devient drolement pointu PB... 8O
Ses détracteurs ne pourront plus "s'assoir dessus" pour le dénigrer :mrgreen:
Encore merci :wink: