Ich verstehe ehrlich gesagt nicht, wieso Du in der customSort-Prozedure ein 'Application.ProcessMessages' eingebaut hast. DAS könnte die Listview durcheinanderbringen.
Weiterhin ist eine ListView einfach nicht dafür gemacht, 7000 Einträge aufzulisten. Im Ernst, wer scrollt die schon durch?
Dazu solltest Du eine Desktop-'Datenbank' verwenden, wie z.B.
Access oder ein einfaches Textfile. Die
ADO-Komponenten unterstützen dich dabei, die können auch mit einfachen Textdateien umgehen. Der zugehörige Provider ist auf jedem Windows-System installiert.
Dann noch ein TDBGrid und das sollte schon Einiges bewirken. Sortieren macht ADOD von haus aus, und das auch noch verdammt schnell. Wenn dir das TDBGrid nicht reicht, such mal nach Alternativen. Die JVCL-Komponentensammlung ist sehr mächtig, und sollte auf keinem PC fehlen. Dort ist bestimmt auch was Brauchbares für Dich.
Steht da nicht 'TreeView'? Ähhhh.....
Da gibt es aber auch TDBTreeViews, eventuell auch in der JVCL. Ansonsten wäre eine TVirtualTreeView einen Versuch wert.