Hallo,
Ich hinterlege in TreeView Items, die per _GUICtrlTreeView_AddChild generiert werden, per _GUICtrlTreeView_SetItemParam zusätzliche Textinformation.
In einem späteren Aufruf durchlaufe ich alle TreeView Items und möchte für die checked Items diesen Text ausgeben. Mein Problem ist, dass _GUICtrlTreeView_GetItemParam
die Item ID verlangt, aber _GUICtrlTreeView_GetNext nur das handle zurück gibt Hat jemand eine Lösung, wie ich vom handle zur Item ID komme?
anbei mein gegenwärtiger Code, der nur 0 liefert:
-------------------------------------------
func getChecked()
Local $Count = _GUICtrlTreeView_GetCount($hTreeView) ;get treeview count
Local $arr[1] ;treeview items handle array
Local $Item1, $ItemN, $ItemP;first item, current item, previous item
Local $iElement
Local $i = 1 ;iterator
$file = FileOpen(@ScriptDir & "\log.txt", 2)
If $Count > 0 Then
ReDim $arr[$Count]
$Item1 = _GUICtrlTreeView_GetFirstItem($hTreeView) ;get first item handle
$ItemN = $Item1 ;current item
$ItemP = $Item1 ;previous item
;get handle of item and save it to array
For $i = 1 to $Count
If $i = 1 Then
$arr[$i-1] = $Item1 ;save first item handle to array
Else
$ItemN = _GUICtrlTreeView_GetNext($hTreeView, $ItemP) ;get current item handle by previous item handle
$ItemP = $ItemN ;save current item handle to temporary variable(change previous item handle to current item handle)
$arr[$i-1] = $ItemN ;save current item handle to array
EndIf
Next
;check item ischecked
FOR $iElement IN $arr
If _GUICtrlTreeView_GetChecked($hTreeView, $iElement) Then
$ptr = _GUICtrlTreeView_GetItemParam($hTreeView,_WinAPI_GetDlgCtrlID( $iElement))
$s = _PointerToStringW($ptr)
;msgbox(0,"",$s)
;FileWrite($file, $s & @CRLF)
EndIf
Next
EndIf
FileClose($file)
EndFunc
---------------------------------------------------
Ich hoffe, mir kann geholfen werden.
Gruß
r_eisner