Hola mRoman, yo utilizaría el procedimiento ExChange del ListBox:
Código Delphi
[-]
var
Indice : Integer;
begin
if ListBox1.ItemIndex > 0 then
begin
Indice := ListBox1.ItemIndex;
ListBox1.Items.Exchange(Indice, Indice-1);
end
else
ListBox1.ItemIndex := 0;
if ListBox1.ItemIndex < ListBox1.Items.Count-1 then
begin
Indice := ListBox1.ItemIndex;
ListBox1.Items.Exchange(Indice, Indice+1);
end
else
ListBox1.ItemIndex := ListBox1.Items.Count-1;
Saluditos