Creo que esto te puede funcionar. En el evento OnMouseDown del ListBox pones:
Código Delphi
[-]
var
Pt: TPoint;
Index: Integer;
begin
if Button = mbRight then
begin
Pt := Point(X, Y);
Index := ListBox1.ItemAtPos(Pt, true);
if Index <> -1 then
begin
ListBox1.ItemIndex := Index;
Pt := ListBox1.ClientToScreen(Pt);
PopupMenu1.Popup(Pt.X, Pt.Y);
end;
end;
end;
// Saludos