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 8O alors que je fait un clic gauche :lol: .

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 8O

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 :P
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 :P .
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 :!: :P