Třeba jsem tě špatně pochopil, ale měl jsem za to že máš ListBox a v něm chceš změnit pořadí položek, které jsou typem TListBoxItem. A ten můj kod ti posune vybranou položku o jednu pozici dolu. Používam to na tlačítko down a kod kde odečítám používám pro tlačítko up. Metodou InsertObject určuješ index kam TListBoxItem vložíš tak mužeš libovolne v ListBoxu, jen jsi musiš hlídat rozsah aby jsi nebyl mimo.
var Item: TListBoxItem := ListBox1.ListItems[2]; // vyberu polozku na treti pozici
ListBox1.RemoveObject(Item); // Odeberu vybranou polozku z ListBoxu
ListBox1.InsertObject(10, Item); // Vlozim polozku na jedenactou pozici