Ich würde anders vorgehen.
wie mkinzler schon sagte: eigene Spalte für die Sortierung verwenden. Nicht den Primärindex. Index auf die Sortierspalte setzen.
Nach ganz oben Schieben:
Code:
Primärindex des zu verschiebenden Feldes merken
Für alle Datensätze, wo Sortierindex < AktuellerSortierindex:
Sortierindex := Sortierindex + 1
Sortierindex des gemerkten Datensatz := 1
Nach ganz unten Schieben:
Code:
Primärindex des zu verschiebenden Feldes merken
Für alle Datensätze, wo Sortierindex > AktuellerSortierindex:
Sortierindex := Sortierindex - 1
Sortierindex des gemerkten Datensatz := größter Sortierindex + 1