hmmm... hab einen (dirty) Workaround gefunden.
Zum reproduzieren das auf ein Furmular einfügen:
Code:
object ListView1: TListView
Left = 0
Top = 0
Width = 303
Height = 88
Align = alTop
Columns = <>
IconOptions.AutoArrange = True
Items.ItemData = {
03200000000100000000000000FFFFFFFFFFFFFFFF00000000FFFFFFFF000000
000366006F006F00}
OwnerDraw = True
TabOrder = 0
OnDblClick = ListView1DblClick
ExplicitWidth = 643
end
und hier der OnDblClick-Event:
Delphi-Quellcode:
procedure TForm1.ListView1DblClick(Sender: TObject);
var lv : TListView;
listitem : TListItem;
begin
lv:=Sender as TListView;
listItem:=lv.Items.Add;
listItem.Caption:='A';
listItem:=lv.Items.Add;
listItem.Caption:='B';
// lv.IconOptions.AutoArrange:=False;
// lv.IconOptions.AutoArrange:=True;
end;
Bleiben die letzen beiden Zeilen auskommentiert sieht man genau das Fehlverhalten der ListView. (Nach einem Doppelklick in's ListView steht da "B A foo".
Kommentiert man die Zeilen ein, dann läuft alles wie es soll. ("foo A B")
Wie gesagt, das löst das Problem, aber es ist halt ein Workaround bei dem ich nicht ganz verstehe warum er nötig ist.