Page 1 sur 2
[OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : dim. 13/déc./2015 15:01
par Ar-S
Y'a t il une syntaxe pour remplacer un cas comme ça sans avoir à mettre 2x BindGadgetEvent:
Code : Tout sélectionner
Case #PB_Event_Gadget
Select EventGadget()
Case #Lmin, #Lsec ; <<<<<<<<<<<<
;Code
EndSelect
Merci
Re: BindGadgetEvent pour la même proce sur plusieurs gadgets
Publié : dim. 13/déc./2015 15:16
par Fred
Non, il faut mettre 2 BindGadgetEvent(). Sinon, tu peux en mettre un seul BindEvent(#PB_Event_Gadget, ...) et faire ce test dans ta callback, mais l'interet est plutot limité.
Re: BindGadgetEvent pour la même proce sur plusieurs gadgets
Publié : dim. 13/déc./2015 15:20
par Ar-S
Ok merci Fred,
Du coup puis-je utiliser des BindGadgetEvent pour certains gadgets, un BindEvent pour mon timer mais laisser ma partie "double gadget pour 1 proce" dans la boucle sans que ça cause de soucis ?
Re: BindGadgetEvent pour la même proce sur plusieurs gadgets
Publié : dim. 13/déc./2015 21:16
par Fred
Oui, ca devrait marcher meme si c'est pas conseillé de mixer tout.
Re: BindGadgetEvent pour la même proce sur plusieurs gadgets
Publié : dim. 13/déc./2015 21:34
par Ar-S
J'ai testé ça a l'air de bien fonctionner.
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : dim. 13/déc./2015 23:41
par falsam
Si tu as pas mal de gadgets, tu peux aussi inclure ton BindGadgetEvent() dans une boucle For .... Next
Code : Tout sélectionner
Enumeration Window
#MainForm
EndEnumeration
Enumeration Gadget
#First
#Second
#Third
#Fourth
#Fifth
EndEnumeration
y=10
Procedure OnClick()
Debug "Clique sur le bouton " + EventGadget()
EndProcedure
If OpenWindow(#MainForm, 0, 0, 500, 400, "BindGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
For Gadget = #First To #Fifth
ButtonGadget(Gadget, 400, y, 80, 22, "Button" + Str(Gadget))
y + 30
BindGadgetEvent(Gadget, @OnClick())
Next
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : lun. 14/déc./2015 2:15
par Ar-S
Mouais pour des actions similaires sur différents gadgets je préfère tout de même le Case #G1,#G2,#G3
C'est dans ce cas là le plus simple et le moins redondant.
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : lun. 14/déc./2015 15:09
par Micheao
c'est nouveau ce BindGadgetEvent
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : lun. 14/déc./2015 15:19
par falsam
Micheao a écrit :c'est nouveau ce BindGadgetEvent
C'est une question ? une affirmation ?
Dans tous les cas Non ce n'est pas nouveau. La version 5.31 de PureBasic intégrée déja cette fonctionnalité.
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : lun. 14/déc./2015 15:48
par Micheao
falsam a écrit :Micheao a écrit :c'est nouveau ce BindGadgetEvent
C'est une question ? une affirmation ?
Dans tous les cas Non ce n'est pas nouveau. La version 5.31 de PureBasic intégrée déja cette fonctionnalité.
j'ai été pas au courant désoler
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : lun. 14/déc./2015 18:12
par Fred
Ar-S a écrit :Mouais pour des actions similaires sur différents gadgets je préfère tout de même le Case #G1,#G2,#G3
C'est dans ce cas là le plus simple et le moins redondant.
Dans ce cas BindEvent() fera l'affaire:
Code : Tout sélectionner
Enumeration Window
#MainForm
EndEnumeration
Enumeration Gadget
#First
#Second
#Third
#Fourth
#Fifth
EndEnumeration
y=10
Procedure OnGenericClick()
Select EventGadget()
Case 1,2,3
Debug EventGadget()
EndSelect
EndProcedure
If OpenWindow(#MainForm, 0, 0, 500, 400, "BindGadget", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
For Gadget = #First To #Fifth
ButtonGadget(Gadget, 400, y, 80, 22, "Button" + Str(Gadget))
y + 30
Next
BindEvent(#PB_Event_Gadget, @OnGenericClick())
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
EndIf
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : lun. 14/déc./2015 18:27
par Ar-S
C'est juste nikel
Merci !
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : mer. 23/déc./2015 16:47
par Ar-S
Je rouvre ce topic car j'ai un nouveau soucis de BindEvent.
#WM_LBUTTONDOWN est bien un event ?
Si je fais
Code : Tout sélectionner
Procedure BougeFenetre()
SendMessage_(WindowID(#MAFENETRE), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndProcedure
Openwindows (etc...)
BindEvent(#WM_LBUTTONDOWN, @BougeFenetre())
Dans une boucle classique de Repeat Until la procedure marche bien.
Une idée de pourquoi ça ne fonctionne pas ?
----EDIT----
En 5.31 ça fonctionne, en 5.41 ça ne fonctionne pas
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : mer. 23/déc./2015 17:07
par Micheao
BOnsoir Ar-S
si j'ai bien compris tu veux pas passer par une boucle Repeat Until
Re: [OK] BindGadgetEvent pour la même proce sur N gadgets ?
Publié : mer. 23/déc./2015 17:53
par Fred
#WM_LBUTTONDOWN n'est pas evenement purebasic, donc ca ne marchera pas BindEvent().