comment creé le double click pour une listicon????

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

comment creé le double click pour une listicon????

Message par jbernard13 »

bonsoir
je voudrais savoir
quand on cree une listeicongadget

comment faireun pour double clique pour selectionner l'element de la listicongadget

en 2 mot comment creé le double click

merci

Bonne nuit :oops:
Jbernard13
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

voir le TUTO souris posté dans la rubrique debutant !!
tu verra ça ! et plein d'autre truc sur la souris !

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 200, 200, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Souris")
   
    SetClassLong_(WindowID(), #GCL_STYLE, GetClassLong_(WindowID(), #GCL_STYLE) | #CS_DBLCLKS) ; Active la gestion du double clic
   
    Repeat
        Event = WaitWindowEvent()
       
        If Event = #WM_LBUTTONDOWN
            Debug "Bouton gauche appuyé"
           
        ElseIf Event = #WM_LBUTTONUP
            Debug "Bouton gauche relaché"
           
        ElseIf Event = #WM_LBUTTONDBLCLK
            Debug "Double clic gauche"
           
        ElseIf Event = #WM_RBUTTONDOWN
            Debug "Bouton droit appuyé"
           
        ElseIf Event = #WM_RBUTTONUP
            Debug "Bouton droit relaché"
           
        ElseIf Event = #WM_RBUTTONDBLCLK
            Debug "Double clic droit"
           
        EndIf
       
    Until Event = #WM_CLOSE
EndIf
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci dobro
et milles excuses pour pas avoir lu le turoriel de la souris sur ce site



bonne journée a tous
Jbernard13
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Salut Jbernard13,


voici 2 codes différents pour faire ça

Un utilise les Api et pas l'autre




Code : Tout sélectionner

Enumeration
  #MainWindow
  #ListIconGadget1
EndEnumeration

Structure LVITEM
   Mask.l
   iItem.l
   iSubItem.l
   State.l
   stateMask.l
   pszText.l
   cchTextMax.l
   iImage.l
   lParam.l
   iIndent.l
   iGroupId.l
   cColumns.l
   puColumns.l
EndStructure

#LVNI_SELECTED   = 2
#LVM_GETNEXTITEM = 4108
#LVIF_STATE      = 8
; ;========================================================================================
; ;========================================================================================

If OpenWindow(#MainWindow, 0, 0, 480, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, " Double click")
  
  If CreateGadgetList(WindowID()) And ListIconGadget(#ListIconGadget1, 40, 95, 398, 180, "Col 1", 298)
    
    For i.b = 1 To 10
      AddGadgetItem(#ListIconGadget1, -1, "Element "+Str(i))
    Next i
    
   ; variable utilisée pour la listicon
   Var.LVITEM\mask = #LVIF_STATE
   Var\iSubItem = 0
    
    Repeat
      
      Select WaitWindowEvent()
        Case #PB_EventGadget
          Select EventGadgetID()
          Case #ListIconGadget1
              If EventType() = #PB_EventType_LeftDoubleClick
                   Var\iItem = SendMessage_(GadgetID(#ListIconGadget1), #LVM_GETNEXTITEM, -1, #LVNI_SELECTED)
                   If Var\iItem <> -1  ; -1 indique pas d'élément sélectionné
                      Ligne = Var\iItem
                      Colonne = 0 
                      Element$ = GetGadgetItemText(#ListIconGadget1, Ligne, Colonne)
                      MessageRequester("Double click sur l'élément",Element$,16)
                   Else
                      MessageRequester("Erreur", "Pas de double click sur un élément",16)
                   EndIf
              EndIf

          EndSelect
          
        Case #PB_EventCloseWindow
          Quit + 1
          
      EndSelect
      
    Until Quit
    
  EndIf
EndIf
End

et l'autre

Code : Tout sélectionner

Enumeration
  #MainWindow
  #ListIconGadget1
EndEnumeration

; ;========================================================================================
; ;========================================================================================

If OpenWindow(#MainWindow, 0, 0, 480, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, " Double click")
  
  If CreateGadgetList(WindowID()) And ListIconGadget(#ListIconGadget1, 40, 95, 398, 180, "Col 1", 298 )
    
    For i.b = 1 To 10
      AddGadgetItem(#ListIconGadget1, -1, "Element "+Str(i))
    Next i
    
    Repeat
      
      Select WaitWindowEvent()
        Case #PB_EventGadget
          Select EventGadgetID()
          Case #ListIconGadget1
              If EventType() = #PB_EventType_LeftDoubleClick
                 For i = 0 To CountGadgetItems(#ListIconGadget1)-1
                      If GetGadgetItemState(#ListIconGadget1, i) & #PB_ListIcon_Selected 
                         Ligne = i
                         Colonne = 0 
                         Element$ = GetGadgetItemText(#ListIconGadget1, Ligne, Colonne)
                         ElementTrouver = #true
                         Break  ; pour sortir
                      EndIf
                 Next i
                 
                 If ElementTrouver 
                     MessageRequester("Double click sur l'élément",Element$,16)
                 Else
                      MessageRequester("Erreur", "Pas de double click sur un élément",16)
                 EndIf
              EndIf 

          EndSelect
          
        Case #PB_EventCloseWindow
          Quit + 1
          
      EndSelect
      
    Until Quit
    
  EndIf
EndIf
End
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Message par jbernard13 »

merci denis
passe un bonne journée
Jbernard13
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

C'est plus simple en utilisant GetGadgetState:

Code : Tout sélectionner

Enumeration 
  #MainWindow 
  #ListIconGadget1 
EndEnumeration 

If OpenWindow(#MainWindow, 0, 0, 480, 300, #PB_Window_ScreenCentered | #PB_Window_SystemMenu, " Double click") 
  
  If CreateGadgetList(WindowID()) And ListIconGadget(#ListIconGadget1, 40, 95, 398, 180, "Col 1", 298 ) 
    
    For i.b = 1 To 10 
      AddGadgetItem(#ListIconGadget1, -1, "Element "+Str(i)) 
    Next i 
    
    Repeat 
      Select WaitWindowEvent() 
        Case #PB_EventGadget
          Select EventGadgetID()  
            Case #ListIconGadget1
              Select EventType()
                Case #PB_EventType_LeftDoubleClick
                  Element = GetGadgetState(#ListIconGadget1)
                  If Element>-1
                    item.s=GetGadgetItemText(#ListIconGadget1, Element, 0) 
                    MessageRequester("Double click sur l'élément",item,16) 
                  EndIf 
              EndSelect  
          EndSelect 
          
        Case #PB_EventCloseWindow 
          Quit + 1 
          
      EndSelect  
    Until Quit 
  EndIf 
EndIf 
End 

:)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Excellent Nico. :D

Au passage Fred, ajoute GetGadgetState dans les fonctions utilisables de la Listicongadget (dans l'aide, la page de la Listicongadget, pas celle de GetGadgetState ) :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'ai aussi découvert cette fonction sur le Forum.

Elle n'apparait pas non plus pour l'OptionGadget.

:)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Je l'ai pourtant déjà utilisé :oops: :oops:


mais bon on ne se rappele pas de tout :D
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Si ça se trouve, c'est sur un de tes codes que j'ai découvert cette fonction pour les Listicon.

:lol:
Répondre