![]() |
Listview spalten addieren
Hallo,
ich stehe gerade etwas auf dem Schlauch und verstehe meine eigene produktion hier nicht mehr :D Folgende Konstellation: Ich habe eine Listview mit 4 Spalten! Spalte 2 ist der Einkaufspreis (EP), Spalte 3 der Verkaufspreis (VP) und Spalte 4 der Umsatz (U), EP und VP stehen in der Liste, die Spalte 4 für den Umsatz ist zunächst leer. Es soll der VP minus EP (Umsatz) in Spalte 4 angezeigt werden und der Gesamtumsatz (alle addiert) am Ende angezeigt werden!
Delphi-Quellcode:
So wie ich es jetzt zunächste gemacht habe, wird nur der Gesamtumsatz am Ende angezeigt und das ganze funktioniert nur
procedure TForm1.but_umsatzClick(Sender: TObject);
var L, Li : TListItem; EP, VP, U : string; i,q, U, U_gesamt : integer; begin U_gesamt := 0; for i := 0 to liv_transfers.Items.Count - 1 do begin for Q := 2 to liv_transfers.Items[I].SubItems.Count - 1 do begin EP := liv_transfers.Items[I].SubItems[0]; VP := liv_transfers.Items[I].SubItems[1]; EP:= ZahlohnePunkte(EP); VP := ZahlohnePunkte(VP); U := strtoint(VP) - strtoint(EP); U_gesamt := U + U_gesamt; end; end; L := liv_transfers.items.add; L.Caption := ('_______________'); L.SubItems.Add('___________'); L.SubItems.Add('___________'); L.SubItems.Add('___________'); Li := liv_transfers.items.add; Li.Caption := ('Gesamt'); Li.SubItems.Add(''); Li.SubItems.Add(''); Li.SubItems.Add(ZahlmitPunkten(inttostr(U_gesamt))); end; wenn manche Umsätze schon in Spalte 4 stehen, wenn Spalte 4 komplett leer ist geht es nicht (for Q := 2 to liv_transfers.Items[I].SubItems.Count - 1 do)???. Ich blick da grad nicht mehr durch?!?! Hoffe es kann jmd helfen! |
Re: Listview spalten addieren
Trenne die Logik von der Darstellung. Eine Listview ist zur Anzeige von Daten gedacht und nicht zur Datenhaltung.
|
Re: Listview spalten addieren
Das ist mir egal, dann werde ich sie eben missbrauchen!
Fakt ist, dass es geht, Frage ist nur wie! |
Re: Listview spalten addieren
Wozu die innere Schleife? Du weißt doch, wo was steht.
Delphi-Quellcode:
Nun noch unten gesamt ausgeben und gut is. Auf Dauer wirst Du mit Deiner Einstellung aber nicht glücklich werden, das kann ich Dir prophezeien.
var i,gesamt,Umsatz: integer;
begin gesamt := 0; for i := 0 to ListView.Items.Count - 1 do begin Umsatz := StrToInt(ListView.Items[i].SubItems[1]) - StrToInt(ListView.Items[i].SubItems[2]); ListView.Items[i].SubItems[3] := IntToStr(Umsatz); inc(gesamt,Umsatz); end; [edit] Addition in Subtraktion geändert, Denkfehler [/edit] |
Re: Listview spalten addieren
Zitat:
Listenindex überschreitet das Maximum(2); |
Re: Listview spalten addieren
Dann setz den Index hinter SubItems jeweils um 1 runter.
|
Re: Listview spalten addieren
hab ich, kommt der gleiche Fehler
|
Re: Listview spalten addieren
Zeig nochmal den aktuellen Code. Und Du hast auch ganz sicher 4 Spalten?
|
Re: Listview spalten addieren
Achtung 4 Spalten = 3 SubItems
|
Re: Listview spalten addieren
Das war mir später auch eingefallen, siehe #6. Aber dann sollte es jetzt eigentlich passen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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