Clic de souris[RESOLU]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Clic de souris[RESOLU]

Message par ach »

Bonjour
Quelqu'un pourrait il me dire comment sélectionner un élément dans une ListViewGadjet au moyen d'un clic de souris afin de le mettre dans une variable pour l'utiliser dans la suite du programme.
Je ne vois pas comment on gère la souris .Je suis nul..
Merci

Code : Tout sélectionner

If OpenWindow(0,0,0,940,1080,"ListViewGadget",#PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
    SetWindowColor(Window_0, RGB(255,255,128))
   ListViewGadget(0,10,40,150,200,#PB_ListView_ClickSelect)
    SetGadgetColor(0, #PB_Gadget_BackColor, $9CF2A1 )
    ListViewGadget(1,220,40,150,100,#PB_ListView_ClickSelect)
    SetGadgetColor(1, #PB_Gadget_BackColor, $9CF2A1 )
   TextGadget(3, 10, 20, 100, 20," Valeur ")
   TextGadget(4, 220, 20, 100, 20," Coefficient ")
   
     For n=0 To 300 Step 15
        AddGadgetItem (0,-1,Str(n) ) 
    Next n
    For n=0 To 10 Step 2
        AddGadgetItem (1,-1,Str(n) ) 
    Next n
      
 Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow

EndIf
End
Dernière modification par ach le sam. 13/févr./2021 17:36, modifié 1 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9476
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Clic de souris

Message par Ar-S »

Salut,

Ta boucle (juste pour le gadget 0 pour l'exemple) :

Code : Tout sélectionner

  Repeat
    Event = WaitWindowEvent()
    
    Select Event
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0
            Select EventType()
              Case #PB_EventType_LeftClick 
                Num = GetGadgetState(0)
                Debug "position : " + Num
                MonChoix$ = GetGadgetItemText(0,num)
            EndSelect
            
            Debug "J'ai cliqué sur " + MonChoix$
        EndSelect
        
        
    EndSelect
  Until Event = #PB_Event_CloseWindow
EndIf
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Clic de souris

Message par microdevweb »

Bonjour ach,

Voici une solution

Code : Tout sélectionner

Procedure evSelect()
  ; recupère l'id du gadget qui envoit l'évenement
  Protected idList = EventGadget(),n,i
  If EventType() = #PB_EventType_LeftClick 
    ; le nb d'article dans la liste
    n = CountGadgetItems(idList)
    ; parcours de tous les articles de la liste
    For i = 0 To n
      If GetGadgetItemState(idList,i)
        Debug GetGadgetItemText(idList,i)
      EndIf
    Next
  EndIf
EndProcedure

If OpenWindow(0,0,0,940,1080,"ListViewGadget",#PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  SetWindowColor(Window_0, RGB(255,255,128))
  ListViewGadget(0,10,40,150,200,#PB_ListView_ClickSelect)
  SetGadgetColor(0, #PB_Gadget_BackColor, $9CF2A1 )
  ListViewGadget(1,220,40,150,100,#PB_ListView_ClickSelect)
  SetGadgetColor(1, #PB_Gadget_BackColor, $9CF2A1 )
  TextGadget(3, 10, 20, 100, 20," Valeur ")
  TextGadget(4, 220, 20, 100, 20," Coefficient ")
  
  For n=0 To 300 Step 15
    AddGadgetItem (0,-1,Str(n) )
  Next n
  For n=0 To 10 Step 2
    AddGadgetItem (1,-1,Str(n) )
  Next n
  ; bind listView 0
  BindGadgetEvent(0,@evSelect())
  ; bind listView 1
  BindGadgetEvent(1,@evSelect())
  
  Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
  
EndIf
End
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Clic de souris

Message par Zorro »

petit rappel a propos de WaitWindowevent(xx)


WindowEvent() <- indiqué dans la doc de cette fonction ;)
Remarque importante n° 1: Comme cette commande n'est pas bloquante, elle peut consommer beaucoup de temps processeur quand elle est dans une boucle d'attente. Dans ce cas, utilisez la commande Delay(), sauf en présence de la fonction FlipBuffers(), ou mieux, il est préférable d'utiliser la commande WaitWindowEvent() avec une petite valeur de minuteur (timeout), comme par exemple 'WaitWindowEvent(1)'.
parceque WaitwindowEvent() est bloquant , il arrete notre programme en attendant le prochain événement le concernant (meilleurs moyen pour ne rien laisser passer mais...)
alors qu'utiliser l'option minuteur permet de rendre WaitWindowEvent(xx) non bloquant .... permet a notre application de rendre la main au systeme..
et donc de permettre a celui ci de rafraichir l'affichage de notre appli ....

on continue de regarder les evenements de la liste , mais on permet a notre prg de marcher en mode Multitache .....
notre application prends nettement moins de temps machine (visible avec Control+Alt+Del )

perso lorsque j'utilise (ais) WaitwindowEvent(xx), je mettais Toujours un minuteur genre WaitWindowEvent(20) .....


d'ailleurs L'utilisation de WindowEvent() impose l'utilisation de Delay() ou de FlipBuffer() , c'est a dire de rendre la main au system ....
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Clic de souris

Message par falsam »

Le sujet de ach ne traite pas de la 2D :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
ach
Messages : 16
Inscription : mar. 10/nov./2020 18:43

Re: Clic de souris

Message par ach »

falsam a écrit :Le sujet de ach ne traite pas de la 2D :wink:
Merci à vous trois et bravo pour votre réactivité
Je vais tester tout cela
Répondre