MareikeRemmel
Grünschnabel
Hallo!
Ich habe eine Programm, welches am Anfang aus einer Ini Datei die Spaltenpositionen des Listviews ausliest und beim Beenden wieder reinschreibt.
Leider funktioniert das mit dem Zuweisen nicht korrekt.
Ich erstelle die Spalten dynamisch, dann nehme ich den String, den ich aus dem Inifile gelesen habe und trenne ihn mit der Funktion Split
so habe ich ein Array.
Dann weiße ich jeder Spalte ihre Position zu
Die Spalten bekommen auch die Werte zugewiesen wie es sein soll...
aber wenn ich dann die Schleife weiter durchgehe passiert es an manchen stellen, dass Positionen einfach verändert werden, denen ich schon eine Position zugewiesen hatte.
Somit stimmt die Reihenfolge nicht mehr.
Dazu hier mal ein Beispiel.
Wie man sieht verändert er irgendwann einfach die Positionen, von den zuvor zugewiesenen Spalten und am Ende passt der letzt String nicht mit dem String zusammen, der im inifile gestanden hat.
Z.B. Zeile 5 dort steht plötzlich an der 3 Stelle die Position obwohl im dritten Durchlauf der 3. Spalte die 4. Position zugewiesen wurde.
Das gleiche passiert in der Zeile 7.
Hier wird der Spalte 8 die Position 10 zugewiesen, im gleichen Schritt wird die Position der Spalte 7 einfach auf 6 gesetzt obwohl im 7 Durchlauf die Spalte 7 die Position 7 zugewiesen bekommen hat.
Ich habe das ganze auch schon mal in einem neuen Projekt getestet. Um auszuschließen, dass es sich hierbei um ein Bug in dem "großen" Projekt handelt.
Aber auch dort tritt das gleiche Symptom auf.
Auch wenn ich die Positionen nicht in der Schleife sondern hart kodiert eingebe.
Hat jemand eine Idee.. was das ist. Hat das Listview evtl. einen Bug. Gibt es dafür einen Patch?
Ich verwende Microsoft Windows Common Controls 6.0 (SP 6)
Vielen Dank!
Ich habe eine Programm, welches am Anfang aus einer Ini Datei die Spaltenpositionen des Listviews ausliest und beim Beenden wieder reinschreibt.
Leider funktioniert das mit dem Zuweisen nicht korrekt.
Ich erstelle die Spalten dynamisch, dann nehme ich den String, den ich aus dem Inifile gelesen habe und trenne ihn mit der Funktion Split
so habe ich ein Array.
Code:
Debug.Print cttorder
ipos = Split("1,14,4,2,5,3,7,10,9,8,12,15,13,11,6,16,17,18", ",")
Dann weiße ich jeder Spalte ihre Position zu
Code:
' Positionen zuweisen
With lisWarteschlange.ColumnHeaders
'countct Anzahl der Spalten
For i = 0 To countct - 1
.Item(i + 1).Position = CInt(ipos(i))
Next i
End With
Die Spalten bekommen auch die Werte zugewiesen wie es sein soll...
aber wenn ich dann die Schleife weiter durchgehe passiert es an manchen stellen, dass Positionen einfach verändert werden, denen ich schon eine Position zugewiesen hatte.
Somit stimmt die Reihenfolge nicht mehr.
Dazu hier mal ein Beispiel.
Code:
so steht es im Inifile
1,14,4,2,5,3,7,10,9,8,12,15,13,11,6,16,17,18
So sehen die Positionen aus, nachdem 1. 2. 3. usw Durchlauf der For-Schleife
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,
1,14,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,
1,14,4,2,3,5,6,7,8,9,10,11,12,13,15,16,17,18,
1,14,4,2,3,5,6,7,8,9,10,11,12,13,15,16,17,18,
1,14,3,2,5,4,6,7,8,9,10,11,12,13,15,16,17,18,
1,14,4,2,5,3,6,7,8,9,10,11,12,13,15,16,17,18,
1,14,4,2,5,3,7,6,8,9,10,11,12,13,15,16,17,18,
1,14,4,2,5,3,6,10,7,8,9,11,12,13,15,16,17,18,
1,14,4,2,5,3,6,10,9,7,8,11,12,13,15,16,17,18,
1,14,4,2,5,3,6,10,9,8,7,11,12,13,15,16,17,18,
1,14,4,2,5,3,6,9,8,7,12,10,11,13,15,16,17,18,
1,13,4,2,5,3,6,9,8,7,11,15,10,12,14,16,17,18,
1,12,4,2,5,3,6,9,8,7,10,15,13,11,14,16,17,18,
1,12,4,2,5,3,6,9,8,7,10,15,13,11,14,16,17,18,
1,13,4,2,5,3,7,10,9,8,11,15,14,12,6,16,17,18,
1,13,4,2,5,3,7,10,9,8,11,15,14,12,6,16,17,18,
1,13,4,2,5,3,7,10,9,8,11,15,14,12,6,16,17,18,
1,13,4,2,5,3,7,10,9,8,11,15,14,12,6,16,17,18,
Wie man sieht verändert er irgendwann einfach die Positionen, von den zuvor zugewiesenen Spalten und am Ende passt der letzt String nicht mit dem String zusammen, der im inifile gestanden hat.
Z.B. Zeile 5 dort steht plötzlich an der 3 Stelle die Position obwohl im dritten Durchlauf der 3. Spalte die 4. Position zugewiesen wurde.
Das gleiche passiert in der Zeile 7.
Hier wird der Spalte 8 die Position 10 zugewiesen, im gleichen Schritt wird die Position der Spalte 7 einfach auf 6 gesetzt obwohl im 7 Durchlauf die Spalte 7 die Position 7 zugewiesen bekommen hat.
Ich habe das ganze auch schon mal in einem neuen Projekt getestet. Um auszuschließen, dass es sich hierbei um ein Bug in dem "großen" Projekt handelt.
Aber auch dort tritt das gleiche Symptom auf.
Auch wenn ich die Positionen nicht in der Schleife sondern hart kodiert eingebe.
Hat jemand eine Idee.. was das ist. Hat das Listview evtl. einen Bug. Gibt es dafür einen Patch?
Ich verwende Microsoft Windows Common Controls 6.0 (SP 6)
Vielen Dank!