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

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 360
Enregistré le : mer. 24 oct. 2007 21:42
Localisation : 56000
Status : Hors ligne

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

#1

Message par jl56 » ven. 27 juil. 2018 20:06

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
Modifié en dernier par jl56 le mar. 31 juil. 2018 18:21, modifié 1 fois.

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 598
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

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

#2

Message par walkson » sam. 28 juil. 2018 13:04

Bonjour,
Regardez à viewtopic.php?p=101732#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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 360
Enregistré le : mer. 24 oct. 2007 21:42
Localisation : 56000
Status : Hors ligne

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

#3

Message par jl56 » mar. 31 juil. 2018 18:21

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

Avatar du membre
walkson
Modérateur
Modérateur
Messages : 598
Enregistré le : ven. 12 août 2011 18:49
Localisation : Essonne
Status : Hors ligne

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

#4

Message par walkson » mer. 01 août 2018 01:07

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
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi

Répondre