Couleur sélection ListView

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Couleur sélection ListView

#1

Message par papami »

Bonsoir à tous.

En manipulation de ListView il est possible, comme dans l'exemple joint d'ordonner une sélection de ligne(s) par _GUICtrlListView_SetItemSelected.
A ce stade le fond de ligne est bleu.
Il le reste aussi après un clic-droit et ouverture d'un MenuContext

Code : Tout sélectionner

#include <GuiListView.au3>
Opt("GUIOnEventMode", 1)

Global $listview

GUICreate("Test", 220, 200, -1, -1)
GUISetBkColor(0x00E0FFFF)
GUISetOnEvent(-3,"_quit")
$listview = GUICtrlCreateListView("N°|ColA|ColB", 10, 10, 200, 142,$LVS_SHOWSELALWAYS)
Local $menu = GUICtrlCreateContextMenu($listView)
Local $menuA = GUICtrlCreateMenuItem("Test", $menu)
Local $bouton = GUICtrlCreateButton("EnsureVisible ligne 5", 40, 170, 120, 20)
GUICtrlSetOnEvent($bouton,"_revoir")
For $i=1 to 20
	GUICtrlCreateListViewItem($i&"|texte A" & $i & "|valeur " & $i, $listview)
Next
_GUICtrlListView_SetItemSelected($listview, 4)
GUISetState()

While 1
	Sleep(1000)
WEnd

Func _revoir()
	_GUICtrlListView_EnsureVisible($listView,4)
	_GUICtrlListView_SetItemSelected($listview,4,False,False)
	Sleep(1000)
	_GUICtrlListView_SetItemSelected($listview,4,True,True)
EndFunc

Func _quit()
	GUIDelete()
	Exit
EndFunc

Func _menuA()
	Sleep(100)
EndFunc
Par contre l'utilisation de la fonction _GUICtrlListView_EnsureVisible provoque la disparition de cette couleur bleue pour la ou les lignes précédemment sélectionnées, même après renvoi de la commande _GUICtrlListView_SetItemSelected, et même après déselection puis resélection (comme dans cet exemple), alors qu'un clic gauche sur une ligne retrouve bien le bleu d'origine.

Le fond gris clair ne permet pas un repérage aisé dans le défilement/exploration de longues listes !

Peut-on remédier à cela et forcer la couleur d'origine à réapparaître ?

Merci pour toute info...
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6089
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Couleur sélection ListView

#2

Message par mikell »

Ce n'est pas la faute de _GUICtrlListView_EnsureVisible (si on commente sa ligne, le problème persiste), c'est une histoire de focus (la listview perd le focus au clic sur le bouton)
Essaye ça

#include <GuiListView.au3>
Opt("GUIOnEventMode", 1)

$gui = GUICreate("Test", 220, 200, -1, -1)
GUISetBkColor(0x00E0FFFF)
GUISetOnEvent(-3,"_quit")
$listview = GUICtrlCreateListView("N°|ColA|ColB", 10, 10, 200, 142,$LVS_SHOWSELALWAYS)
Local $menu = GUICtrlCreateContextMenu($listView)
Local $menuA = GUICtrlCreateMenuItem("Test", $menu)
Local $bouton = GUICtrlCreateButton("EnsureVisible ligne 5", 40, 170, 120, 20)
GUICtrlSetOnEvent($bouton,"_revoir")
For $i=1 to 20
   GUICtrlCreateListViewItem($i&"|texte A" & $i & "|valeur " & $i, $listview)
Next
_GUICtrlListView_SetItemSelected($listview, 4)
GUISetState()

While 1
   Sleep(10)
WEnd

Func _revoir()
   _GUICtrlListView_EnsureVisible($listview,4)
   ControlFocus($gui, "", $listview)
EndFunc

Func _quit()
   GUIDelete()
   Exit
EndFunc
 
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
papami
Niveau 4
Niveau 4
Messages : 96
Enregistré le : lun. 19 nov. 2007 17:25
Status : Hors ligne

Re: Couleur sélection ListView

#3

Message par papami »

PARFAIT !

Merci chef mikell

P.S je vais remettre un mot sur mon fil précédent, au sujet de StringRegExpReplace car ma solution n'est pas idéale...
Répondre