Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listview spalten addieren (https://www.delphipraxis.net/138954-listview-spalten-addieren.html)

NaPsTeRforever 20. Aug 2009 13:44


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:
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;
So wie ich es jetzt zunächste gemacht habe, wird nur der Gesamtumsatz am Ende angezeigt und das ganze funktioniert nur
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!

DeddyH 20. Aug 2009 13:56

Re: Listview spalten addieren
 
Trenne die Logik von der Darstellung. Eine Listview ist zur Anzeige von Daten gedacht und nicht zur Datenhaltung.

NaPsTeRforever 20. Aug 2009 13:59

Re: Listview spalten addieren
 
Das ist mir egal, dann werde ich sie eben missbrauchen!

Fakt ist, dass es geht, Frage ist nur wie!

DeddyH 20. Aug 2009 14:40

Re: Listview spalten addieren
 
Wozu die innere Schleife? Du weißt doch, wo was steht.
Delphi-Quellcode:
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;
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.

[edit] Addition in Subtraktion geändert, Denkfehler [/edit]

NaPsTeRforever 20. Aug 2009 15:12

Re: Listview spalten addieren
 
Zitat:

Zitat von DeddyH
Wozu die innere Schleife? Du weißt doch, wo was steht.
Delphi-Quellcode:
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;
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.

[edit] Addition in Subtraktion geändert, Denkfehler [/edit]

Dann kommt die Fehlermeldung:
Listenindex überschreitet das Maximum(2);

DeddyH 20. Aug 2009 15:22

Re: Listview spalten addieren
 
Dann setz den Index hinter SubItems jeweils um 1 runter.

NaPsTeRforever 20. Aug 2009 15:26

Re: Listview spalten addieren
 
hab ich, kommt der gleiche Fehler

DeddyH 20. Aug 2009 15:28

Re: Listview spalten addieren
 
Zeig nochmal den aktuellen Code. Und Du hast auch ganz sicher 4 Spalten?

mkinzler 20. Aug 2009 15:29

Re: Listview spalten addieren
 
Achtung 4 Spalten = 3 SubItems

DeddyH 20. Aug 2009 15:30

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 09:16 Uhr.
Seite 1 von 2  1 2      

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