Вот, только вчера програмил

:
Для перемещения вверх:
Код:
if (ListBox2.ItemIndex>0) then
ListBox2.Items.Exchange(ListBox2.ItemIndex, ListBox2.ItemIndex-1);
Для перемещения вниз соответственнно:
Код:
if (ListBox2.ItemIndex<(ListBox2.Items.Count-1)) and (ListBox2.ItemIndex>=0) then
// если не проверять на >=0, то при ItemIndex = -1 получится фигня. :)
ListBox2.Items.Exchange(ListBox2.ItemIndex, ListBox2.ItemIndex+1);
Items.Count - количество строк в листбоксе.
ItemIndex возвращает номер выделенной строчки в листбоксе. Номер первой строчки = 0. номер последней строчки =
Items.Count-1. Если ни одна строчка не выделена, то = -1.
if - здесь это проверка на крайние значения, без этого при слишком большом или слишком маленьком ItemIndex и нажатой кнопке выскочит ошибка index out of bound(). Одновременно проверяется, выделена ли вообще строчка.
А вообще, чаще читай встроенный хелп Дельфей. Там нет именно этого кода, но догадаться, как это сделать, можно. Да и быстрее самому разобраться, чем ждать ответа от доброго дяди.
