AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi TListView - Listenindex überschreitet Maximum(8)
Thema durchsuchen
Ansicht
Themen-Optionen

TListView - Listenindex überschreitet Maximum(8)

Ein Thema von schuetze09 · begonnen am 14. Jan 2005 · letzter Beitrag vom 14. Jan 2005
Antwort Antwort
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#1

TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 05:59
Hallo,

Was ich nicht verstehe, unter W2K kommt keine Exception, aber unter WinXP.

Hier mal mein Source:
Delphi-Quellcode:
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;
was ist daran falsch?

MfG
schuetze09
  Mit Zitat antworten Zitat
rantanplan99
(Gast)

n/a Beiträge
 
#2

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 06:50
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 06:51
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;
Thomas
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#4

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 07:09
@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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 07:16
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;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#6

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 07:20
@SirThornberry

SUPER so geht es DANKE....

MfG
schuetze09
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 07:22
@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)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
schuetze09

Registriert seit: 3. Mär 2004
113 Beiträge
 
Delphi 2005 Architect
 
#8

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 07:28
@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
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#9

Re: TListView - Listenindex überschreitet Maximum(8)

  Alt 14. Jan 2005, 07:50
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
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz