Page 1 sur 1
[RESOLU] PanelGadget et double clic
Publié : jeu. 15/oct./2009 18:21
par venom
Bonjour,
voilà j'ai voulu faire un petit code qui en double cliquant sur un onglet, me permette d'en créer un nouveau.
je me suis aperçu que le seul
EventType() pris en compte etait le :
#PB_EventType_RightClick 
alors que je fait un clic gauche

.
voici un code pour mieux comprendre le problème.
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 425, 325, "Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget(1, 10, 10, 400, 300)
AddGadgetItem(1, 0, "onglet 1")
AddGadgetItem(1, 1, "onglet 2")
EndIf
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 1
Select EventType()
Case #PB_EventType_LeftClick : Debug "Clic avec le bouton gauche de la souris"
Case #PB_EventType_RightClick : Debug "Clic avec le bouton droit de la souris"
Case #PB_EventType_LeftDoubleClick : Debug "Double-clic avec le bouton gauche de la souris"
Case #PB_EventType_RightDoubleClick : Debug "Double-clic avec le bouton droit de la souris"
EndSelect
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
je trouve la réaction du déboguer assez étrange
vous en pensez quoi ?
@++
Re: PanelGadget et double clic
Publié : jeu. 15/oct./2009 20:10
par Ar-S
C'est vrai que c'est bizarre, surtout en le comparant à l'exemple evenType de la doc
Dejà tu peux mettre ton Endif à la fin de ton code. Mais ça ne change rien à la reaction bouton de droite.

Re: PanelGadget et double clic
Publié : ven. 16/oct./2009 0:11
par PAPIPP
Bonjour à tous
@venom
Peur_être un élément de réponse!
Code : Tout sélectionner
#WM_MOUSEWHEEL = $20A
#WHEEL_DELTA = 120
If OpenWindow(0, 0, 0, 425, 350, "Exemple", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget(0, 10, 10, 400, 300)
AddGadgetItem(0, 0, "onglet 1")
AddGadgetItem(0, 1, "onglet 2")
PanelGadget(1, 10, 30, 400, 300)
AddGadgetItem(1, 0, "onglet 11")
AddGadgetItem(1, 1, "onglet 12")
CloseGadgetList()
EndIf
;{- Event loop
; ******************************************** Debut de la boucle ************************************
Repeat
; Debug "**********************************deb_boucle **************************************** " + f_n(mclickd) + " " + f_n(meg)
chaine$ = ""
WWE = WaitWindowEvent()
;WE = WindowEvent(); ne pas mettre cette fonction en service sous risque de dysfonctionnement
Fenetre = EventWindow()
EG = EventGadget()
ET = EventType()
EM = EventMenu()
EWP = EventwParam()
ELP = EventlParam()
;******************************************************************************************
Select WWE
Case #PB_Event_CloseWindow
End
Case #WM_LBUTTONDOWN ;"Bouton gauche appuyé")
Debug "Clic avec le bouton gauche de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
Case #WM_LBUTTONUP ;"Bouton gauche relaché")
Case #WM_LBUTTONDBLCLK ;"Double clic gauche")
Debug "Double-clic avec le bouton gauche de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
Case #WM_RBUTTONDOWN ;"Bouton droit appuyé")
Debug "Clic avec le bouton droit de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
Case #WM_RBUTTONUP ;"Bouton droit relaché")
Case #WM_RBUTTONDBLCLK ;"Double clic droit")
Debug "Double-clic avec le bouton droit de la souris Gadget="+Str(EG)+" etat="+Str(GetGadgetState(EG))
Case #WM_MBUTTONDOWN ;"Bouton du milieu appuyé"
Case #WM_MBUTTONUP ;"Bouton du milieu relaché")
Case #WM_MBUTTONDBLCLK ;"Double clic du milieu")
Case #WM_MOUSEMOVE
Case #WM_MOUSEWHEEL
Molette.l = -(EWP>>16)/#WHEEL_DELTA
If Molette>0 ;"Molette en avant de
ElseIf Molette<0 ;"Molette en arrière de
EndIf
Case #PB_Event_Gadget
Select ET
Case #PB_EventType_LeftClick ;"Image : Bouton gauche appuyé"
Case #PB_EventType_LeftDoubleClick ;"Image : Double clic gauche")
Case #PB_EventType_RightClick ;"Image : Bouton Droit appuyé"
Case #PB_EventType_RightDoubleClick ;"Image : Double clic droit")
EndSelect
Case #PB_Event_Repaint
; StartDrawing(WindowOutput(#Window_0))
; DrawImage(ImageID(Frame3D_5), 792, 97)
; ; DrawImage(ImageID(1), 320, 80)
; ; DrawImage(ImageID(2), 320, 200)
; StopDrawing()
EndSelect
; *************************************** fin de la boucle *****************************************
; Until WE = #PB_Event_CloseWindow Or WWE = #PB_Event_CloseWindow
ForEver
End ;******************************* fin du PRG *************************************************
A+
Re: PanelGadget et double clic
Publié : ven. 16/oct./2009 5:49
par venom
Peur_être un élément de réponse!
merci bien PAPIPP
ce code renvoie bien tous les différents clics de souris. mais je trouve sa dommage de passer par les API alors que pas mal de gadget fonctionne avec
EventType() de base
Code : Tout sélectionner
- ExplorerListGadget()
- ExplorerTreeGadget()
- ImageGadget()
- ListViewGadget()
- ListIconGadget()
- MDIGadget()
- SpinGadget()
- StringGadget()
- WebGadget()
sa pourrais etre sympa que la version future le fasse nativement

.
merci de ce code.
@++
Re: [RESOLU] PanelGadget et double clic
Publié : ven. 16/oct./2009 10:14
par Ulix
@ PAPIPP : Sympa ce code, permet de contourné certaine difficulté avec les événements des gadgets.
Existe-il aussi pour LINUX ?
Merci d'avance
