Hi,
ich möchte die Checkbox aktivieren, wenn ein Eintrag im ListView ausgewählt ist.
Dies funktioniert auch, jedoch wird die Checkbox immer deaktiviert und aktiviert, wenn ein anderes Item angeklickt wird.
Wie kann ich dies verhindern? Oder ignoriert ihr sowas?
AutoIt
#Region ;************ Includes ************
#include <WindowsConstants.au3>
#include <GuiListView.au3>
#include <GUIConstantsEx.au3>
#EndRegion ;************ Includes ************
Global $iListView_markiert_merken
Opt("GUIOnEventMode", 1)
GUICreate("Test", 300, 300)
;Liste mit Updates
Global $idListview_schnell = GUICtrlCreateListView("Test", 50, 50, 150, 150, -1, $WS_EX_CLIENTEDGE)
_GUICtrlListView_SetExtendedListViewStyle($idListview_schnell, BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_DOUBLEBUFFER))
GUICtrlCreateListViewItem("Zeile 1", $idListview_schnell)
GUICtrlCreateListViewItem("Zeile 2", $idListview_schnell)
GUICtrlCreateListViewItem("Zeile 3", $idListview_schnell)
Global $idCheckbox_test = GUICtrlCreateCheckbox("Test", 10, 10)
GUICtrlSetState($idCheckbox_test, $GUI_DISABLE)
GUIRegisterMsg($WM_NOTIFY, "WM_Notify")
GUISetOnEvent($GUI_EVENT_CLOSE, "_beenden")
GUISetState()
Func WM_NOTIFY($hWnd, $iMsg, $wParam, $lParam)
#forceref $hWnd, $iMsg, $wParam
Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR
Local $hWndListView2
$hWndListView2 = $idListview_schnell
If Not IsHWnd($idListview_schnell) Then $hWndListView2 = GUICtrlGetHandle($idListview_schnell)
$tNMHDR = DllStructCreate($tagNMHDR, $lParam)
$hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
$iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
$iCode = DllStructGetData($tNMHDR, "Code")
Select
Case $hWndFrom = $hWndListView2
Select
Case $iCode = $LVN_ITEMCHANGED
_check()
EndSelect
EndSelect
EndFunc ;==>WM_NOTIFY
Func _check()
Local $iListView_markiert2
$iListView_markiert2 = _GUICtrlListView_GetNextItem($idListview_schnell)
If $iListView_markiert2 <> $iListView_markiert_merken Or $iListView_markiert_merken = "" Then
$iListView_markiert_merken = $iListView_markiert2
If _GUICtrlListView_GetSelectedCount($idListview_schnell) > 0 And BitAND(GUICtrlGetState($idCheckbox_test), $GUI_DISABLE) Then
ConsoleWrite("deaktivieren" & @TAB & $iListView_markiert2 & @TAB & $iListView_markiert_merken & @CRLF)
GUICtrlSetState($idCheckbox_test, $GUI_ENABLE)
ElseIf _GUICtrlListView_GetSelectedCount($idListview_schnell) = 0 And BitAND(GUICtrlGetState($idCheckbox_test), $GUI_ENABLE) Then
ConsoleWrite("aktivieren" & @TAB & $iListView_markiert2 & @TAB & $iListView_markiert_merken & @CRLF)
GUICtrlSetState($idCheckbox_test, $GUI_DISABLE)
EndIf
EndIf
EndFunc ;==>_check
Func _beenden()
Exit
EndFunc ;==>_beenden
While 1
Sleep(10)
WEnd
Alles anzeigen