AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listview - Fehler: Überschreitet Maximum

Ein Thema von schuetze09 · begonnen am 30. Nov 2004 · letzter Beitrag vom 30. Nov 2004
Antwort Antwort
Seite 1 von 2  1 2      
schuetze09

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

Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:24
Hallo,

mein Probem ist, das ich bei meinen Listview immer die Fehlermeldung bekomme: Listview überschreitet Maximum (0).
Ich habe schon im Forum gesucht aber keine Lösung gefunden, die mir weiterhilft.

Die Exception wird hier ausgelöst:
Delphi-Quellcode:
procedure TForm_UserAnlegen.ListView1CustomDrawItem(
  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
 if ListView1.Items.Count = -1
 then exit
 else if StrToInt(Item.SubItems[0]) > 0 then Color := clgreen;
end;
Kann mir bitte jemand weiterhelfen?

MfG
schuetze09
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#2

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:27
Ganz einfach. Du hast dem Item keine Untereinträge (weiteren Spalten) hinzugefügt. Die erste Spalte ist die Eigenschaft Caption. Die zweite Spalte wäre SubItems[0].
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
OLLI_T

Registriert seit: 13. Okt 2003
Ort: Nähe Wetzlar / Hessen
143 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:32
Auch Hallo!

1. Wann wird Count=-1? Das kommt höchstens bei meinem Konto am Monatsende vor.

2. Viel mehr sollte Dich interessieren, ob das Item auch tatsächlich SubItems hat:
If Item.SubItems.Count=0 Then Exit; 3. Was passiert, wenn die Spalte keine gültige Zahl enthält? Exceptions in Paint Routinen sind höchst unangenehm.

4. Ich bin mal gespannt, was hier so alles grün wird.

Viele Grüsse

Der OLLI
No Pain No Gain!
  Mit Zitat antworten Zitat
schuetze09

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

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:40
@OLLI_T:
wie sollte ich es sonst machen? ich habe in der Spalte nur 1 oder 0 drin.
und wenn ich deins:
Delphi-Quellcode:
 If Item.SubItems.Count=0
 then exit
 else if StrToInt(Item.SubItems[0]) > 0 then ListView1.Canvas.Brush.Color := clgreen;
mit einbaue, bekomme ich die Fehlermeldung: Listenindex überschreitet Maximum (1)

MfG
schuetze09
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#5

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:48
Irgendwas verheimlichst du uns. Aus dem Stückquellcode kann keine überschreitet Maximum (1) kommen. Du greifst ja nur auf das 0-te Element zu.

[Edit]Wenn du nur auf 0 oder eins prüfen möchtest und du die Werte selber einträgst kannst du dir das StrToInt sparen. Ein Item.SubItems[0] = '1' läuft auf das gleiche hinaus.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
schuetze09

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

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:50
@jim_raynor: Also verheimlich will ich nix. Was brauchst du alles damit du mit helfen kannst?

MfG
schuetze09

PS: was ich machen will, ist, dass alle SubItems im Listview, die eine 0 als Wert haben, grün dargestellt werden.
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#7

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:52
Okay. Zeigt doch mal deinen Code, wo ein Eintrag hinzugefügt wird.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
schuetze09

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

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 08:55
OK, hier der Code mit dem ich das Listview befülle:
Delphi-Quellcode:
procedure AllUser(Listview: TListView);
var ADODataSet: TADODataSet;
    ListItem : TlistItem;
begin
  ADODataSet:= TADODataSet.Create(nil);
  ADODataSet.Connection:=DataModule_DBConnect.ADOConnection1;
  Listview.Items.BeginUpdate;
  try
    ADODataSet.CommandText:='SELECT * from tbl_username order by username';
    ADODataSet.Open;
    while not ADODataSet.EOF do
      begin
        ListItem:=Listview.Items.Add;
        ListItem.Caption:=ADODataSet.FieldByName('username').AsString;
        ListItem.SubItems.Add(ADODataSet.FieldByName('admin').AsString);
        ADODataSet.Next;
      end;
  except
    on E:Exception do
    begin
      MDialog(E.Message, mtError, [mbOK]);
    end;
  end;
  Listview.Items.EndUpdate;
  ADODataSet.Close;
  ADODataSet.Free;
end;
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#9

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 09:00
Das sieht erstmal gut aus. Steht denn bei CustomDraw noch mehr drin? Weil eigentlich müsste es so funktionieren wie Olli_T gepostet hat.

Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#10

Re: Listview - Fehler: Überschreitet Maximum

  Alt 30. Nov 2004, 09:04
Hallo,

Du musst in der OnDraw unbedingt als erstes prüfen ob der Item<>nil ist. In Deinem Fall also:
Delphi-Quellcode:
procedure TForm_UserAnlegen.ListView1CustomDrawItem(
  Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  if (Item=nil) then Exit;
  if (Item.SubItems.Count>0) then
  begin
    if (StrToInt(Item.SubItems[0])>0) then Sender.Canvas.Font.Color:=clGreen
      else Sender.Canvas.Font.Color:=clBlack;
  end; // if
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:22 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