Delphi-PRAXiS
Seite 2 von 2     12   

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)

mkinzler 20. Aug 2009 15:31

Re: Listview spalten addieren
 
War auch nicht an dich, sondern den TE gerichtet

NaPsTeRforever 20. Aug 2009 15:38

Re: Listview spalten addieren
 
Zitat:

Zitat von mkinzler
Achtung 4 Spalten = 3 SubItems

Das weiß ich und habe ich auch berücksichtigt, auch bevor Deddy es korrigierte :D

der jetzige Code:

Delphi-Quellcode:
  Umsatz_gesamt := 0;
  for i := 0 to liv_transfersalltime.Items.Count - 1 do
  begin
    Umsatz := StrToInt(ZahlohnePunkte(liv_transfersalltime.Items[i].SubItems[1])) - StrToInt(ZahlohnePunkte(liv_transfersalltime.Items[i].SubItems[0]));
    liv_transfersalltime.Items[i].SubItems[2] := IntToStr(Umsatz);
    inc(Umsatz_gesamt,Umsatz);
    Umsatz_gesamt := Umsatz_gesamt + Umsatz;
  end;
Und ja ich habe 4 Spalten
Name, Einkaufspreis, Verkaufspreis, Umsatz

Die Listview wird mit Hilfe dieser procedure aus einer Datei gefüllt:

Delphi-Quellcode:
procedure ListViewLoadFromFile(Filename : String; ListView : TsListView);
{Copyright Christoph Duwald 2005}
var
   TextFile,TextFile2 : TStringList;
   NewListItem: TListItem;
   i,x: integer;
begin
try
  ListView.Clear;
  TextFile:= TStringList.Create;
  TextFile2:= TStringList.Create;

  TextFile.LoadFromFile(Filename); //ListView aus der Datei laden.
  TextFile2.Delimiter:='#';   //Trennzeichen, wie beim Speichern angegeben
 
  for i:=0 to TextFile.Count-1 do  // Geht alle Zeilen durch (ohne Überschriften)
  begin
    TextFile2.DelimitedText:=TextFile.Strings[i]; //Erste Zeile aus der gespeicherten Datei in die Richtigen Spalten schreiben
    NewListItem := ListView.Items.Add;       //Neues Item anlegen
    NewListItem.ImageIndex:=StrToInt(TextFile2.Strings[0]); //Index des Images für diese Zeile
    NewListItem.Caption :=TextFile2.Strings[1];     //Erste Spalte
    for x:=2 to TextFile2.Count-1 do       //Geht die restlichen Spalten durch
    begin
      NewListItem.SubItems.Add(TextFile2.Strings[x]);   //Spalten mit dem text aus der Datei füllen
    end;

  end;
finally
  TextFile.Free;
  TextFile2.Free;
end;
end;
Bsp-Datei:
Code:
0#Badstuber#940.000#2.223.600
0#Breno#310.000#676.200
Vlt hängt es damit zusammen?

EDIT: Die Subitems[0] und [1] stimmen, habe es mir in einem testmemo ausgeben lassen und eine Spalte 4 existiert auch definitiv!

DeddyH 20. Aug 2009 15:54

Re: Listview spalten addieren
 
Wo soll die 4. Spalte denn herkommen? Ich sehe da einen ImageIndex, einen Namen und 2 Zahlen, damit komme ich auf 3 Spalten.

[edit]Aber gut:
Delphi-Quellcode:
Umsatz_gesamt := 0;
  for i := 0 to liv_transfersalltime.Items.Count - 1 do
  begin
    Umsatz := StrToInt(ZahlohnePunkte(liv_transfersalltime.Items[i].SubItems[1])) - StrToInt(ZahlohnePunkte(liv_transfersalltime.Items[i].SubItems[0]));
    if liv_transfersalltime.Items[i].SubItems.Count < 3 then
      liv_transfersalltime.Items[i].SubItems.Add(IntToStr(Umsatz))
    else
      liv_transfersalltime.Items[i].SubItems[2] := IntToStr(Umsatz);
    inc(Umsatz_gesamt,Umsatz);
    // doppelt gemoppelt: Umsatz_gesamt := Umsatz_gesamt + Umsatz;
  end;
So müsste es immer passen.[/edit]

NaPsTeRforever 20. Aug 2009 16:04

Re: Listview spalten addieren
 
kA was du meinst, wie gesagt 4 Spalten:
Name, Einkaufspreis, Verkaufspreis, Umsatz

Aus der Datei werden Name, Einkaufspreis und Verkaufspreis in die Listview geladen, die Umsatzspalte (Spalte4!!!) bleibt dabei leer!

Wie in meinem ersten Beitrag bereits angemerkt und durch gerade erneutes Testen stelle ich fest, dass das ganze funktioniert wenn in der Umsatzspalte bereits etwas steht!!!

Also hat die Listview (speziell liv_transfersalltime.Items[i].SubItems[2] := IntToStr(Umsatz); ) irgend ein Problem mit der leeren Spalte4 oder nicht??!?!


EDIT:

Zitat:

Zitat von DeddyH
Wo soll die 4. Spalte denn herkommen? Ich sehe da einen ImageIndex, einen Namen und 2 Zahlen, damit komme ich auf 3 Spalten.

[edit]Aber gut:
Delphi-Quellcode:
Umsatz_gesamt := 0;
  for i := 0 to liv_transfersalltime.Items.Count - 1 do
  begin
    Umsatz := StrToInt(ZahlohnePunkte(liv_transfersalltime.Items[i].SubItems[1])) - StrToInt(ZahlohnePunkte(liv_transfersalltime.Items[i].SubItems[0]));
    if liv_transfersalltime.Items[i].SubItems.Count < 3 then
      liv_transfersalltime.Items[i].SubItems.Add(IntToStr(Umsatz))
    else
      liv_transfersalltime.Items[i].SubItems[2] := IntToStr(Umsatz);
    inc(Umsatz_gesamt,Umsatz);
    // doppelt gemoppelt: Umsatz_gesamt := Umsatz_gesamt + Umsatz;
  end;
So müsste es immer passen.[/edit]


aaaah ok, jetzt gehts :D

EDIT2: hat sich erledigt xD

mkinzler 20. Aug 2009 16:06

Re: Listview spalten addieren
 
Beim Import, werden dann aber nur 3 Spalten erstellt.

FrankJ28 20. Aug 2009 16:08

Re: Listview spalten addieren
 
Hallo,
also nach meiner unmaßgeblichen Meinung füllst Du dein Listview mit dem gezeigten Textfile, was aber nur eine Cption und 2 (zwei) SubItems befüllt. Häng doch einfach eine DummySpalte (#_) hinten dran und schau mal was passiert.
Ciao
Frank


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:49 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz