Hallo,
folgender Code ruft eine Fehlermeldung hervor:
Delphi-Quellcode:
LVItem:= MyListView.Items.Add;
LVitem.Caption := 'testbezeichnung';
Die Fehlermeldung lautet: "Listenindex überschreitet das Maximum(1)". Diese kenne ich eigentlich im Zusammenhang mit dem Sprengen von Array-Dimensionsgrenzen, aber hier ist doch eigentlich kein Array verletzt!
Um die Sache zu vereinfachen: Der Fehler tritt nur auf, wenn ich die bestehenden Listeneinträge per Klick auf einen der Columnheader sortiert habe. Das mache ich wie folgt:
Delphi-Quellcode:
procedure TForm1.MyListViewColumnClick(Sender: TObject;
Column: TListColumn);
begin
if MyListView_sort = 0 then MyListView_sort := 1; //glob. Programmvariable
if MyListView_col_idx = Column.Index then //glob. Programmvariable
MyListView_sort := MyListView_sort * -1
else
MyListView_sort := 1;
MyListView_col_idx := Column.Index;
MyListView.AlphaSort;
procedure TForm1.MyListViewCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var ix :integer;
begin
if MyListView_col_idx = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)
else begin
ix := MyListView_col_idx - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;
Compare := Compare * MyListView_sort;
end;
end;
Wobei ich zugeben muss, dass ich mir das kopiert habe. Das Sortieren funktioniert so wunderbar, aber ich verstehe nicht wirklich was da passiert. Jedenfalls sorgt es für eine Fehlermeldung, wenn ich an die Liste ein neues Item anfüge und dessen Caption-Eigenschaft setzen möchte.
Viele Grüße