![]() |
Listview - Fehler: Überschreitet Maximum
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:
Kann mir bitte jemand weiterhelfen?
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; MfG schuetze09 |
Re: Listview - Fehler: Überschreitet Maximum
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].
|
Re: Listview - Fehler: Überschreitet Maximum
Auch Hallo!
1. Wann wird Count=-1? Das kommt höchstens bei meinem Konto am Monatsende vor. :shock: 2. Viel mehr sollte Dich interessieren, ob das Item auch tatsächlich SubItems hat:
Delphi-Quellcode:
3. Was passiert, wenn die Spalte keine gültige Zahl enthält? Exceptions in Paint Routinen sind höchst unangenehm.
If Item.SubItems.Count=0 Then Exit;
4. Ich bin mal gespannt, was hier so alles grün wird. Viele Grüsse Der OLLI |
Re: Listview - Fehler: Überschreitet Maximum
@OLLI_T:
wie sollte ich es sonst machen? ich habe in der Spalte nur 1 oder 0 drin. und wenn ich deins:
Delphi-Quellcode:
mit einbaue, bekomme ich die Fehlermeldung: Listenindex überschreitet Maximum (1)
If Item.SubItems.Count=0
then exit else if StrToInt(Item.SubItems[0]) > 0 then ListView1.Canvas.Brush.Color := clgreen; MfG schuetze09 |
Re: Listview - Fehler: Überschreitet Maximum
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. |
Re: Listview - Fehler: Überschreitet Maximum
@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. |
Re: Listview - Fehler: Überschreitet Maximum
Okay. Zeigt doch mal deinen Code, wo ein Eintrag hinzugefügt wird.
|
Re: Listview - Fehler: Überschreitet Maximum
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; |
Re: Listview - Fehler: Überschreitet Maximum
Das sieht erstmal gut aus. Steht denn bei CustomDraw noch mehr drin? Weil eigentlich müsste es so funktionieren wie Olli_T gepostet hat.
:gruebel: |
Re: Listview - Fehler: Überschreitet Maximum
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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