Page 1 sur 1

[R] Double clic sur une ligne d'un liste

Posté : ven. 27 juil. 2018 21:06
par jl56
Bonjour à tous,

Je n'arrive pas à lancer une action en double-cliquant sur une ligne d'une liste
exemple fournie dans l'aide autoit

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <MsgBoxConstants.au3>

Example()

Func Example()
	Local $iI, $iTimer, $hListView

	; Create GUI
	GUICreate("ListView Add Array", 400, 300)
	$hListView = GUICtrlCreateListView("", 2, 2, 394, 268)
	GUISetState(@SW_SHOW)

	; Add columns
	_GUICtrlListView_AddColumn($hListView, "Items", 100)
	_GUICtrlListView_AddColumn($hListView, "SubItems 1", 100)
	_GUICtrlListView_AddColumn($hListView, "SubItems 2", 100)
	_GUICtrlListView_AddColumn($hListView, "SubItems 3", 100)

	_GUICtrlListView_SetItemCount($hListView, 5000)

	; One column load
	Local $aItems[5000][1]
	For $iI = 0 To UBound($aItems) - 1
		$aItems[$iI][0] = "Item " & $iI
	Next
	$iTimer = TimerInit()
	_GUICtrlListView_AddArray($hListView, $aItems)
	MsgBox($MB_SYSTEMMODAL, "Information", "Load time: " & TimerDiff($iTimer) / 1000 & " seconds")

	_GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($hListView)) ; items added with UDF function can be deleted using UDF function

	; Four column load
	Local $aItems[5000][4]
	For $iI = 0 To UBound($aItems) - 1
		$aItems[$iI][0] = "Item " & $iI
		$aItems[$iI][1] = "Item " & $iI & "-1"
		$aItems[$iI][2] = "Item " & $iI & "-2"
		$aItems[$iI][3] = "Item " & $iI & "-3"
	Next
	$iTimer = TimerInit()
	_GUICtrlListView_AddArray($hListView, $aItems)
	MsgBox($MB_SYSTEMMODAL, "Information", "Load time: " & TimerDiff($iTimer) / 1000 & " seconds")

	; Loop until the user exits.
	Do
	Until GUIGetMsg() = $GUI_EVENT_CLOSE
	GUIDelete()
EndFunc   ;==>Example
Lorsque je sélectionne une ligne de la liste avec la souris je dois cliquer sur un bouton pour lancer une action donné
J'aimerais le faire directement par un double clic, avez vous, SVP, une suggestion pour résoudre mon problème.

Merci

Cordialement,

JL56

Re: [..] Double clic sur une ligne d'un liste

Posté : sam. 28 juil. 2018 14:04
par walkson
Bonjour,
Regardez à https://www.autoitscript.fr/forum/viewt ... 32#p101732
Cela devrait répondre à votre demande.
Sur l'exemple, la deuxième colonne est cachée et c'est elle qui est utilisée pour lancer une action

Re: [..] Double clic sur une ligne d'un liste

Posté : mar. 31 juil. 2018 19:21
par jl56
Bonjour à tous,

@walkson
super
j'ai adapté mon script ça fonctionne très bien
je ne comprend pas tout mais parfois il faut sans contenter

Merci beaucoup

A+

JL56

Re: [R] Double clic sur une ligne d'un liste

Posté : mer. 01 août 2018 02:07
par walkson
Oui, la fonction est surprenante !
Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
   #forceref $hWnd, $iMsg, $iwParam
On utilise des variables qui ne sont pas déclarées.
En fait, la fonction surveille Windows des manutentions et de ses résultats en utilisant GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")
WM_NOTIFY est utilisé pour les listviews, WM_COMMAND pour les buttons et les edits, WM_PAINT pour mettre à jour l'affichage etc...
Vous avez toute la liste dans l'aide à la rubrique Windows Message Codes (il y en a beaucoup dont je ne sais pas à quoi elles servent... C'est un domaine que je dois encore travailler :wink: ) et les différentes variables comme $WM_NOTIFY dans WindowsConstants.au3
Elles sont aussi très pratiques car elles fonctionnent indépendamment du code et donc très sensibles

Plus d'info sur le Wiki Tuto GUIRegisterMsg