Existe una forma de localizar si el ratón está en un Item o no:
ItemAtPos
Código:
void __fastcall TForm1::ListBox1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
// nItem será el ItemIndex 0 -1 si no es un Item
int nItem = ListBox1->ItemAtPos(TPoint(X,Y), true);
...........
...........
}
En funciones en las que no sepas las coordenadas del ratón... Pues las calculas

:
Código:
void __fastcall TForm1::Función()
{
TPoint Point;
::GetCursorPos(&Point);
Point = ListBox1->ScreenToClient(Point);
// nItem será el ItemIndex 0 -1 si no es un Item
int nItem = ListBox1->ItemAtPos(Point, true);
........
........
}
Saludos.