Wenn ich die von dir auskommentierten Zeile wieder aktiviere, dann funktioniert bei mir alles wie gewünscht, d.h. die Selektion wird temporär verschoben.
Delphi-Quellcode:
// ...
if (button = mbRight) and (iRow > 0) and (iRow < RowCount) then
begin
// Row := iRow;
ContextRow := iRow;
pt := ClientToScreen(Point(x, y));
PopUpMenu1.Items.Find('delete').Enabled:= row = irow;
PopUpMenu1.Popup(pt.x, pt.y);
// Row := iSelected;
end
// ...
Grüße