ListView->FullDrag und ColumnOrder
-
Mahlzeit.
Ich drehe hier gerade am Rad!

Wie bekomme ich die Zugehörigkeit zwischen Column->Index und der Position im Header aufgedröselt, wenn ich die Columns per Drag&Drop umgerührt habe?
So eine TListColumn hat ja ein Feld FOrderTag. Ich vermute ja fast, das die Info da drin steht, dumm nur, das es Private ist...
Jedenfalls benötige ich den Index der original Reihenfolge, ebenso wie den, der Aktuellen, um einerseits die gewählte Spalte farbig hervorzuheben und andererseits fürs sortieren den korrekten SubItem-Index...mfg
xXxPS: Warum liefert die Suchfunktion eigendlich keine Ergebnisse?

-
Hallo
du kannst ja den Urspungsindex der einzelnen Spalten am Anfang in die TColumnList::Tag-Eigenschaft reinschreiben und dann immer wieder auslesen, wenn du den brauchst.
bis bald
akari
-
Hab mich wohl etwas unglücklich ausgedrückt.
Der ItemIndex ist immer der gleiche, bezieht sich also immer auf den korrekten Subitem.
bsp:
Index|Position|Inhalt
0 ----- 1 ----- Caption
1 ----- 2 ----- SubItem[0]
2 ----- 3 ----- SubItem[1]
3 ----- 4 ----- SubItem[2]Index|Position|Inhalt
0 ----- 1 ----- Caption
3 ----- 2 ----- SubItem[2]
2 ----- 3 ----- SubItem[1]
1 ----- 4 ----- SubItem[0]Das Problem ist jetzt, das ich nirgends die Position abfragen kann. Gibts da evt. WinAPI-Tricks um an die Position zu kommen?
Ich nutze einen von TListColumn abgeleitete Komponente, kann ich dort irgendwas verbiegen, um Zugriff auf FOrderTag zu bekommen?Edit: Oder bekomme ich bei OnColumnClick den falschen Item übergeben? (man testet mal...)
Edit2: Also scheinbar würfelt der ListView beim Drag&Drop die Columns wild durcheinander. Der TListColumn der beim ColumnClick übergeben wird ist natürlich der "falsche", was die Position anbelangt. Die richtige Spalte bekomme ich damit aber sortiert. Wenn ich jetzt beim Erstellen den Tag-Wert setze bleibt nach einmal Drag&Drop die Reihenfolge der Tag-Werte die ich über ColumnClick bekomme richtig, d.h. Tag "0" ist Index "xy", aber wird an Position 0 dargestellt, etc.
Sobald ich aber nochmal Drag&Drop mache, stimmt das auch nicht mehr...
Edit3:
Hab jetzt mal aus langeweile die Methode SetIndex überschrieben um vor setzen des Index die Tag-Werte mal zu tauschen. Rein theoretisch müssten die dann ja mit den Index-Wert übereinstimmen. Nach dem Ersten Drag&Drop stimmt das auch noch. Aber sobald ich mehrfach umsortiere kommt das alles durcheinander...
"Was tun?" sprach Zeus...
-
Ein hoch auf die WinAPI

HWND hHeader=ListView_GetHeader(ListView1->Handle); HDITEM hdritem; hdritem.mask=HDI_ORDER; Header_GetItem(hHeader, Column->Index, &hdritem ); int TheOneAndOnlyRealIndex=hdritem.iOrder;Bis demnächst...
mfg
xXx