Wie lassen sich markierte Zeilen in einer ListView deaktivieren?
Im folgenden Script aus der Hilfedatei (leicht abgeändert) klappt das markieren einer Zeile bzw. den Focus setzen, aber nicht andersherum.
C
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ListBoxConstants.au3>
#include <WinAPI.au3>
#include <GuiListBox.au3>
#include <GuiListView.au3>
#include <Misc.au3>
Opt('MustDeclareVars', 1)
$Debug_LV = False ; Prüft den Klassennamen (ClassName), der an die ListView-Funktion übergeben wird. Setze dies versuchsweise auf True und verwende dann ein Handle zu einem anderen Control, um die Funktionsweise zu verstehen.
_Main()
Func _Main()
Local $hListView
GUICreate("ListView: Item für eine verschieben Operation markieren", 500, 300)
$hListView = GUICtrlCreateListView("", 2, 2, 394, 268,BitOR($WS_VSCROLL, $LBS_SORT, $LVS_SHOWSELALWAYS), $WS_EX_STATICEDGE)
GUISetState()
; Fügt die Spalten hinzu
_GUICtrlListView_AddColumn($hListView, "Spalte 1", 100)
_GUICtrlListView_AddColumn($hListView, "Spalte 2", 100)
_GUICtrlListView_AddColumn($hListView, "Spalte 3", 100)
; Fügt die Items hinzu
_GUICtrlListView_AddItem($hListView, "Zeile 1: Spalte 1", 0)
_GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 2", 1)
_GUICtrlListView_AddSubItem($hListView, 0, "Zeile 1: Spalte 3", 2)
_GUICtrlListView_AddItem($hListView, "Zeile 2: Spalte 1", 1)
_GUICtrlListView_AddSubItem($hListView, 1, "Zeile 2: Spalte 2", 1)
_GUICtrlListView_AddItem($hListView, "Zeile 3: Spalte 1", 2)
; Item 2 für eine verschieben Operation markieren
Sleep(5000)
_GUICtrlListView_SetItemState($hListView,1,BitOR($LVIS_SELECTED,$LVIS_FOCUSED),BitOR($LVIS_SELECTED,$LVIS_FOCUSED))
Sleep(1000)
MsgBox(4160, "Information", "Item 2: " & _GUICtrlListView_GetItemState($hListView,1,BitOR($LVIS_SELECTED,$LVIS_FOCUSED)))
; Die Schleife wiederholt sich, bis der Benutzer die Beenden-Aktion der GUI auslöst
Do
Until GUIGetMsg() = $GUI_EVENT_CLOSE
GUIDelete()
EndFunc ;==>_Main
Alles anzeigen