Hallo com,
in einer LV in der ich die Items mit _GUICtrlListView_AddItem und die SbItems mit _GUICtrlListView_AddSubItem erzeuge, habe ich das Problem, dass beim Löschen aller Items mit _GUICtrlListView_DeleteAllItems und danach neu erstellen von Items ich am Ende der LV unerwünschte Einträge habe. Hier das Skript:
Spoiler anzeigen
#include <GuiConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiImageList.au3>
#include <WindowsConstants.au3>
#include <File.au3>
Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]Global $hGui, $listview, $hImage, $b, $iCount
Global $Combo, $aFile, $sDLLName, $Msg
Local $exStyles = BitOR($LVS_EX_GRIDLINES, $LVS_EX_FULLROWSELECT, $LVS_EX_SUBITEMIMAGES)
$hGui = GUICreate("Icon-Übersicht " & $sDLLName, 1024, 500, 0, 0)
$Combo = GUICtrlCreateCombo("", 2, 2, 120)
$aFile = _FileListToArray(@SystemDir, "*.DLL")
GUICtrlSetData($Combo, "Bitte einen DLL auswählen")
For $i = 1 To $aFile[0]
GUICtrlSetData($Combo, $aFile[$i])
Next
;$listview = _GUICtrlListView_Create($hGui,"", 2, 42, 1020, 456,BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
$listview = GUICtrlCreateListView("", 2, 42, 1020, 456, BitOR($LVS_SHOWSELALWAYS, $LVS_NOSORTHEADER, $LVS_REPORT))
_GUICtrlListView_SetExtendedListViewStyle($listview, $exStyles)
For $i = 1 To 8
; Fügt die Spalten hinzu
_GUICtrlListView_AddColumn($listview, "Spalte " & $i, 120)
Next
GUISetState()
GUICtrlSetData($Combo, "shell32.dll", "shell32.dll")
_showIcons("shell32.dll")
While 1
$Msg = GUIGetMsg()
Switch $Msg
Case $GUI_EVENT_CLOSE
Exit
Case $Combo
$sDLLName = GUICtrlRead($Combo)
_showIcons($sDLLName)
EndSwitch
WEnd
Func _showIcons($sDLLName)
Local $iSpalten, $iZeilen, $iBilder
_GUICtrlListView_DeleteAllItems($listview)
_GUIImageList_Destroy($hImage)
; Lädt die Bilder
$hImage = _GUIImageList_Create(24, 24, 5, 3, 128, 256)
For $iBilder = 0 To 255
_GUIImageList_AddIcon($hImage, @SystemDir & "\" & $sDLLName, $iBilder)
Next
_GUICtrlListView_SetImageList($listview, $hImage, 1)
$iCount = _GUIImageList_GetImageCount($hImage)
ConsoleWrite($iCount & @CRLF)
$iBilder = -1
For $iZeilen = 1 To Int(($iCount - 1) / + 1
$iBilder += 1
; Fügt die Items hinzu
_GUICtrlListView_AddItem($listview, "Bild: " & $iBilder, $iBilder)
For $iSpalten = 1 To 7
$iBilder += 1
; fügt die SubItems hinzu
_GUICtrlListView_AddSubItem($listview, $iZeilen-1, "Bild: " & $iBilder, $iSpalten, $iBilder)
Next
Next
EndFunc ;==>_showIcons
um den Effekt zu sehen einfach in der ComboBox eine DLL runter und wieder hochblättern.
Des weiteren wäre es interessant für mich zu wissen, wie ich vor der Aufnahme einer DLL in die Auswahl-Combo feststellen kann ob diese überhaupt ICONS enthält, dies ist aber sekundär,
mfg autoBert