Yo quitaría el menú de la propiedad PopupMenu del ListBox y en el evento OnMouseDown seleccionaría el ítem y mostraría el menú:
Código Delphi
[-]
procedure TForm1.ListBox1MouseDown(...);
var
P: TPoint;
I: Integer;
begin
if Button = mbRight then
begin
P := Point(X, Y);
I := ListBox1.ItemAtPos(P, true);
if I <> -1 then
begin
ListBox1.ItemIndex := I;
P := ListBox1.ClientToScreen(P);
PopupMenu1.Popup(P.X, P.Y);
end;
end;
end;
// Saludos