![]() |
Fehler beim TListView-OnCompare
Hi,
ich habe eine TListView mit den Methoden OnCompare und OnColumnClick um die Liste zu sortieren. Das funktioniert ja auch, aber wenn ich die bestehende Liste sortiere und dann irgendwann einen neuen Eintrag hinzufüge, erhalte ich folgenden Fehler: Im Projekt ist eine Exception der Klasse EStringListError aufgetreten. Meldung: 'Listenindex überschreitet das Maximum (1)'. Prozess wurde angehalten.Mit einzelne Anweisung oder Start fortsetzen Er versucht nach dem Hinzufügen gleich die Liste neu zu sortieren, aber dann tritt der Fehler auf. Ich weiß echt nicht mehr was ich ändern soll, hoffe es kann mir jemand helfen! Danke
Delphi-Quellcode:
procedure Tframe_geburtstag.GeburtstageColumnClick(Sender: TObject;
Column: TListColumn); begin ColumnToSort := Column.Index; (Sender as TCustomListView).AlphaSort; end;
Delphi-Quellcode:
Auf Button Klick in der ListView einen Eintrag hinzufügen:
procedure Tframe_geburtstag.GeburtstageCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer); var ix: Integer; begin if ColumnToSort = 0 then Compare := CompareText(Item1.Caption,Item2.Caption) else begin ix := ColumnToSort - 1; Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); end;
Delphi-Quellcode:
Item := Geburtstage.Items.Add;
Item.Caption := '' + '11.11.2001'; //Datum Item.SubItems.Add('typ'); //Typ Item.SubItems.Add(Edt_Nachname.Text); |
Re: Fehler beim TListView-OnCompare
Ich würde mal so tippen, dass es kein SubItem mit dem Index ix gibt.
|
Re: Fehler beim TListView-OnCompare
Hi Schneewittchen,
ich gehe mal davon aus dass du nach dem Hinzufügen die ColumnClick-Routine aufrufst. Ich hab jetzt kein Delphi und kann daher nicht ausprobieren, was passiert wenn man eine Liste mit einem Item sortieren will. Führ den ColumnClick nicht immer aus, sondern nur wenn die Anzahl Elemente größer als 1 ist:
Delphi-Quellcode:
Greetz
if Geburtstage.Items.Count > 1 then
GeburtstageColumnClick(Geburtstage, Geburtstage.Columns[0]); alcaeus |
Re: Fehler beim TListView-OnCompare
Die Routine wird ja standardmäßig von Delphi ausgeführt, ich ruf die nicht explizit auf.
Es sind immmer mehrere Elemente vorhanden, das ist nicht das Problem. Der Fehler tritt mitten in der Liste auf unter dem Sortieren, wenn er Werte vergleicht... :gruebel: |
Re: Fehler beim TListView-OnCompare
Hi,
vielleicht hilft das ja noch: Habe beim portieren von Delphi3-Code nach Delphi5 gemerkt, daß bei TListView_Items im OnCompare-Event die Elemente "Item1.SubItems[i]" bzw. "Item2.SubItems[i]" ab Index 11 (!!) gezählt werden. Kleinere Werte führen unweigerlich zu einer Exception. Delphi 5 zählt offensichtlich von Null an, und was Delphi 7 macht, keine Ahnung. Gruß Achim :wall: |
Re: Fehler beim TListView-OnCompare
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz