![]() |
TListView - Listenindex überschreitet Maximum(8)
Hallo,
Was ich nicht verstehe, unter W2K kommt keine Exception, aber unter WinXP. Hier mal mein Source:
Delphi-Quellcode:
was ist daran falsch?
procedure TForm_Main.MovieListCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if ((Item.Index mod 2)= 0) then begin MovieList.Canvas.Brush.color:=clSkyBlue; if Item.SubItems.Strings[8] = '-' then MovieList.Canvas.Brush.color:=clRed; // hier kommt die Exception!!! end; end; MfG schuetze09 |
Re: TListView - Listenindex überschreitet Maximum(8)
evtl. weil Item.SubItems.Strings[8] nur von 0-7 geht? und nicht von 1-8? Indizes fangen immer bei 0 an und gehen bis Count - 1.
rantanplan |
Re: TListView - Listenindex überschreitet Maximum(8)
Hallo
Mach mal eine Ueberpruefung, ob Strings[8] ueberhaupt existiert
Delphi-Quellcode:
if ((Item.Index mod 2) = 0) then
begin MovieList.Canvas.Brush.color := clSkyBlue; if Item.SubItems.Strings[8] = '-' then if Item.SubItems.Count >= 7 then MovieList.Canvas.Brush.color := clRed; // hier kommt die Exception!!! end; |
Re: TListView - Listenindex überschreitet Maximum(8)
@toms:
habe ich mal ausprobiert, geht leider auch nicht. kommt genau die gleiche Fehlermeldung... meine Listview hat insgesamt 10 Spalten, also 1 item und 9 subitems... mfg schuetze09 |
Re: TListView - Listenindex überschreitet Maximum(8)
so muss es sein
Delphi-Quellcode:
if ((Item.Index mod 2) = 0) then
begin if (Item.SubItems.Count > 8) and (Item.SubItems.Strings[8] = '-') then MovieList.Canvas.Brush.color := clRed else MovieList.Canvas.Brush.color := clSkyBlue; end; |
Re: TListView - Listenindex überschreitet Maximum(8)
@SirThornberry
SUPER so geht es DANKE.... MfG schuetze09 |
Re: TListView - Listenindex überschreitet Maximum(8)
@schuetze: Wenn es so geht heißt das aber auch das vermutlich kein Index 8 vorhanden ist, denn sonst wäre der Fehler nie aufgetaucht, außer du hast paar zeilen die weniger spalten haben und dann wiederum welche die wirklich eine 9te Spalte haben (Index 8)
|
Re: TListView - Listenindex überschreitet Maximum(8)
@SirThornberry :
heißt das, wenn eine Spalte keinen Wert hat, verringert sich der index? Bsp: Zeile 1: 9Spalten und 9 Werte = max Index 8 Zeile 2: 9Spalten und 8 Werte = max Index 7 |
Re: TListView - Listenindex überschreitet Maximum(8)
Hallo schuetze,
wenn deine ListView insgesamt 9 Spalten hat, und du eine neue Zeile (Items.Add) hinzufügst, so sind die SubItems für die einzelnen Spalten noch nicht belegt. Du musst für jede Zeile nochmals SubItems.Add('...') ausführen, damit diese existieren. Andernfalls bekommst du beim Zugriff wie gehabt eine AV. Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 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-2025 by Thomas Breitkreuz