Page 1 sur 1
Clic de souris[RESOLU]
Publié : sam. 30/janv./2021 11:45
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
Re: Clic de souris
Publié : sam. 30/janv./2021 18:41
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
Re: Clic de souris
Publié : dim. 31/janv./2021 13:59
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
Re: Clic de souris
Publié : lun. 01/févr./2021 10:28
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 ....
Re: Clic de souris
Publié : lun. 01/févr./2021 11:55
par falsam
Le sujet de ach ne traite pas de la 2D

Re: Clic de souris
Publié : lun. 01/févr./2021 14:05
par ach
falsam a écrit :Le sujet de ach ne traite pas de la 2D

Merci à vous trois et bravo pour votre réactivité
Je vais tester tout cela