Alles anzeigenMoin!
Ich hab mir dein Skript zwar jetzt nicht so genau angesehen, weil ich es in Ermangelung an Datenbanken auch nicht testen kann,
aber ich habe mal ein kurzes Beispiel zu _GUICtrlListView_BeginUpdate und _GUICtrlListView_EndUpdate.Da Flackert zwar nichts, aber die Unterschiede sind emorm. Am Schluss hab ich noch ein Beispiel zu _GUICtrlListView_AddArray angefügt, was nochmal nen Tacken schneller ist, allerdings nicht so flexibel. Du kannst die Funktion aber nach deinen Vorlieben anpassen, was ich selbst schon getan habe.
Skript
Spoiler anzeigen
[autoit]#include <GuiListView.au3>
[/autoit] [autoit][/autoit] [autoit]GUICreate("ListView", 200, 600)
[/autoit] [autoit][/autoit] [autoit]
$hListView = GUICtrlCreateListView("Spalte 1| Spalte 2", 0, 0, 200, 600)$iEingabe = InputBox("", "Anzahl der Elemente eingeben:", "1000")
[/autoit] [autoit][/autoit] [autoit]
If $iEingabe = "" Then ExitGUISetState()
[/autoit] [autoit][/autoit] [autoit]_FillListView($iEingabe)
[/autoit] [autoit][/autoit] [autoit]do
[/autoit] [autoit][/autoit] [autoit]
Until GUIGetMsg() = -3Func _FillListView($iItems)
[/autoit] [autoit][/autoit] [autoit]
Local $aItem[$iItems][2]
For $i = 0 To $iItems - 1
$aItem[$i][0] = StringFormat("Zeile Nr. %04s", $i)
$aItem[$i][1] = "Sinnloses Zeug"
Next$iBegin = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To $iItems - 1
GUICtrlCreateListViewItem($aItem[$i][0] & "|" & $aItem[$i][1], $hListView)
Next
MsgBox(0, "", "Dauer zum Befüllen des ListViews mit " & $iItems & " Items: " & TimerDiff($iBegin) / 1000 & " Sekunden")_GUICtrlListView_BeginUpdate($hListView)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_DeleteAllItems($hListView)
_GUICtrlListView_EndUpdate($hListView)$iBegin = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_BeginUpdate($hListView)
For $i = 0 To $iItems - 1
GUICtrlCreateListViewItem($aItem[$i][0] & "|" & $aItem[$i][1], $hListView)
Next
_GUICtrlListView_EndUpdate($hListView)
MsgBox(0, "", "Dauer zum Befüllen des ListViews mit " & $iItems & " Items: " & TimerDiff($iBegin) / 1000 & " Sekunden")_GUICtrlListView_BeginUpdate($hListView)
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_DeleteAllItems($hListView)
_GUICtrlListView_EndUpdate($hListView)$iBegin = TimerInit()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListView_BeginUpdate($hListView)
_GUICtrlListView_AddArray($hListView, $aItem)
_GUICtrlListView_EndUpdate($hListView)
_GUICtrlListView_SetColumnWidth($hListView, 0, $LVSCW_AUTOSIZE)
_GUICtrlListView_SetColumnWidth($hListView, 1, $LVSCW_AUTOSIZE)MsgBox(0, "", "Dauer zum Befüllen des ListViews mit " & $iItems & " Items: " & TimerDiff($iBegin) / 1000 & " Sekunden")
[/autoit]
EndFuncSanfte Grüße
Hey super vielen Dank für die Beispiele. das scheint ja wirklich gut zu klappen in dem Fall.
Ich war auch schon angefangen etwas in der Art zu scripten was deinem 3. Beispiel entspricht.
Leider bin ich da jetzt auf ein Problem gestoßen was für mich keinen Sinn ergibt.
Im ArrayDisplay() ist noch alles super ABER dann:
_GUICtrlListView_AddArray($hListView, $aItem) liest die ersten 3 Zeilen richtig ein und dann bei der 4. Zeile ist die erste Spalte noch richtig(Kundennummer) aber dann folgt der Name eines total falschen Kunden der an die Stelle garnicht hingehört und dann werden plötzlich nurnoch die Kundennummern übernommen(1. Spalte) und die anderen 5 Spalten bleiben leer.
Ganz am Ende ist dann plötzlich bei den letzten ~5 Kunden wieder alles in Ordnung
Soo... Wie könnt Ihr mir nun helfen ohne dass ich euch die Datenbank mit den ganzen Kundendaten posten muss?
BTW: In deinem Beispiel kannst du vor und nach _GUICtrlListView_AddArray() die _GUICtrlListView_BeginUpdate($hListView) bzw _GUICtrlListView_EndUpdate($hListView) wegmachen, weil die Funktion intern das Beginnupdate aufruft und beendet