Die Sortierreihenfolge einer ListView wird durch die Eigenschaft 'SortType' definiert. Der von Dir beobachtete Effekt tritt dann ein, wenn SortType einen anderen Wert als 'stNone' hat. Ohne weiteres Zutun ist das ListView bestrebt, jede Änderung an den Items sofort sortiert darzustellen. Als Abhilfe umklammere deine Umbenennungsoperationen mit einem ListView.Items.BeginUpdate / EndUpdate, so etwa:
Delphi-Quellcode:
...
ListView.Items.BeginUpdate;
Try
For i:=0 to ListView.Items.Count - 1 do
RenameItem (ListView.Items[i]);
Finally
ListView.Items.EndUpdate;
End;
...
Durch das 'BeginUpdate' wird nun sowohl die Darstellung als auch die instantane Sortierung blockiert, bis 'EndUpdate' aufgerufen wird.