ListView - Checkbox

05/30/2013 00:30 Asuramaru#1
Abend :)

Würde gerne wissen ob es möglich ist eine Checkbox in der ListView auf OnCheck/Uncheck zu prüfen, also das eine Aktion ausgeführt wird wenn Checkbox XX checked ist bzw. wenn sie unchecked ist.

Das einzige was ich gefunden habe ist das Prüfen aller checkboxen und nicht auf OnCheck (permanent oder per Button)

Code:
_GUICtrlListView_GetItemChecked
Möchte die Aktionen natürlich nicht permanent neu Aufrufen.
05/30/2013 00:42 lolkop#2
paste doch mal ein beispiel, einer listview mit einer checkbox...

intuitiv würde ich sagen, das du das ganze ganz normal über guictrlread/getstate auslesen kannst
05/30/2013 01:00 Asuramaru#3
Code:
#include <GUIConstantsEx.au3>
#include <ListViewConstants.au3>
#include <GuiListView.au3>


$Form1 = GUICreate("KOM Hacker", 482, 452)
$ListView1 = GUICtrlCreateListView("Test", 0, 0, 482, 406,"",BitOR($LVS_EX_FULLROWSELECT, $LVS_EX_CHECKBOXES))
GUICtrlCreateListViewItem("Test123", $ListView1)
GUISetState(@SW_SHOW)
#endregion ### END Koda GUI section ###

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
	For $i = 0 To _GUICtrlListView_GetItemCount($ListView1) - 1

		If _GUICtrlListView_GetItemChecked($ListView1, $i) Then
			MsgBox(0, "Test", "Test")
		EndIf

	Next
WEnd

Hierbei wird die Funktion (MessageBox) immer wieder aufgerufen solange die Checkbox "aktiviert" ist.
05/30/2013 01:54 butter123#4
$changed = False
While Sleep(10)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
For $i = 0 To _GUICtrlListView_GetItemCount($ListView1) - 1

If _GUICtrlListView_GetItemChecked($ListView1, $i) <> $changed Then
MsgBox(0, "Test", "Test")
$changed = Not $changed
EndIf

Next
WEnd

kannst es aber auch mal mit onevent versuchen.
05/30/2013 02:55 KDeluxe#5
In deinem Beispiel würde er sämtliche Zustände aller folgenden Items umschalten, sobald eine Checkbox nicht $changed entspricht. Daher unbrauchbar.

Ein Vorschlag von mir wäre NM_CLICK zu verwenden. Guck dir dafür mal die Hilfe zu _GUICtrlListView_ClickItem an. Mit dem Index könntest du wiederum _GUICtrlListView_GetItemChecked verwenden um den aktuellen Zustand abzufragen.
05/30/2013 15:12 butter123#6
man müsste natürlich ein array anlegen um den zustand von jeder checkbox zu speichern.