Hey,
ich suche eine Möglichkeit herauszufinden wieviele Items in einer Gruppe sind.
z.B. lese ich eine INI ein und stelle diese mit Hilfe von Gruppen in einem Listview dar:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <WindowsConstants.au3>
#include <Array.au3>
#include <File.au3>
Global $ini = "" ;Pfad zur ini
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Ini read to Listview - Beispiel", 700, 500, -1, -1)
$ListView1 = GUICtrlCreateListView("", 20, 20, 660, 350)
$hlistview = GUICtrlGetHandle($ListView1)
_GUICtrlListView_AddColumn($hlistview, "Key", 200)
_GUICtrlListView_AddColumn($hlistview, "Value", 450)
$Button2 = GUICtrlCreateButton("Iniread", 20, 420, 120, 33, 0)
$Button1 = GUICtrlCreateButton("Add", 220, 420, 120, 33, 0)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button2
_Initolistview($hlistview, $ini)
Case $Button1
_Add()
EndSwitch
WEnd
Func _Initolistview($hwnd, $path)
; nuts (http://www.autoit.de)
; $hwnd = Handle to the listview
; $path = ini path
Local $anames, $aread
If Not IsHWnd($hwnd) Then
SetError(1,0,1) ;not a handle -> @error = 1
Return
ElseIf Not FileExists($path) Then
SetError(1,0,2) ;ini not found -> @error = 2
Return
EndIf
$anames = IniReadSectionNames($path)
$counter = -1;_GUICtrlListView_GetItemCount($hwnd)
For $i = 1 To $anames[0]
$aread = IniReadSection($path, $anames[$i])
If @error Then
$counter += 1
_GUICtrlListView_EnableGroupView($hwnd)
_GUICtrlListView_InsertGroup($hwnd, -1, $i, $anames[$i])
_GUICtrlListView_AddItem($hwnd, "Kein Eintrag")
_GUICtrlListView_SetItemGroupID($hwnd, $counter, $i)
ContinueLoop
EndIf
_GUICtrlListView_EnableGroupView($hwnd)
_GUICtrlListView_InsertGroup($hwnd, -1, $i, $anames[$i])
For $x = 1 To $aread[0][0]
$counter += 1
_GUICtrlListView_AddItem($hwnd, $aread[$x][0])
_GUICtrlListView_AddSubItem($hwnd, $counter, $aread[$x][1], 1)
_GUICtrlListView_SetItemGroupID($hwnd, $counter, $i)
Next
Next
EndFunc ;==>_Initolistview
Func _Add()
#region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Form1", 431, 200, 192, 124)
$Input1 = GUICtrlCreateInput("", 40, 64, 113, 21)
$Input2 = GUICtrlCreateInput("", 192, 64, 177, 21)
$Label1 = GUICtrlCreateLabel("Key", 40, 32, 36, 17)
$Label2 = GUICtrlCreateLabel("Value", 192, 32, 36, 17)
$Button = GUICtrlCreateButton("Übernehmen", 140, 150, 120, 33, 0)
GUISetState(@SW_HIDE, $Form1)
GUISetState(@SW_SHOW, $Form2)
#endregion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
GUIDelete($Form2)
GUISetState(@SW_SHOW, $Form1)
ExitLoop
case $Button
local $count
_GUICtrlListView_AddItem($hlistview,GUICtrlRead($Input1))
local $count=_GUICtrlListView_GetItemCount($hlistview)-1
_GUICtrlListView_AddSubItem($hlistview,$count,GUICtrlRead($Input1),1)
_GUICtrlListView_SetItemGroupID($hlistview,$count,1)
GUIDelete($Form2)
GUISetState(@SW_SHOW, $Form1)
ExitLoop
EndSwitch
WEnd
EndFunc ;==>_Add
Um die INI wieder zurückzuschreiben müsste man jetzt wissen wieviele Gruppen es gibt (_GUICtrlListView_GetGroupCount) und eben wieviele Items in einer Gruppe drin sind (oder den Index des Start- bzw. des Enditems).
Gibt es dafür eine einfache Möglichkeit? In der HIlfe hab ich keinen passenden Befehl gefunden.
Gruß nuts