You could try the following code (I modified dominochmiel's code). I'm not working on a computer with C++Builder right now, so you might have to make some minor adjustments.
int SelItem;
void __fastcall TForm1::ListBox1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
SelItem=ListBox1->ItemIndex;
}
void __fastcall TForm1::UpwardClick(TObject *Sender)
{
if(ListView->ItemIndex > 0)
{
AnsiString AuxValue = ListView->Items->Strings[ListView->Items->ItemIndex - 1]; // or Values instead of Strings
ListView->Items->Strings[ListView->Items->ItemIndex - 1] = ListView->Items->Strings[ListView->Items->ItemIndex];
ListView->Items->Strings[ListView->Items->ItemIndex] = AuxValue;
// or you could still use a SelItem variable, but I think that the system should select the item clicked with the mouse automaticaly
}
//---------------------------------------------------------------------------
void __fastcall TForm1:

ownwardClick(TObject *Sender)
{
if(ListView->ItemIndex < ListView->Count - 1)
{
AnsiString AuxValue = ListView->Items->Strings[ListView->Items->ItemIndex + 1]; // or Values instead of Strings
ListView->Items->Strings[ListView->Items->ItemIndex + 1] = ListView->Items->Strings[ListView->Items->ItemIndex];
ListView->Items->Strings[ListView->Items->ItemIndex] = AuxValue;
}
//---------------------------------------------------------------------------