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 TStringrid Zellen summieren (https://www.delphipraxis.net/74569-tstringrid-zellen-summieren.html)

Privateer3000 5. Aug 2006 11:52


TStringrid Zellen summieren
 
Hi folks,

ist es wie bei excel möglich Zahlen in einem Stringgrid zu addieren?
ZB gäbe 4 Zeilen die in der 1.Spalte Spieler 1 und 2.Spalte Punkte beinhalten.
Wieviel Punkte hat Spieler 1? Ohne auf eine DB ausweichen zu müssen?

Greetz
Privateer3000

Christian Seehase 5. Aug 2006 11:54

Re: TStringrid Zellen summieren
 
Moin Privateer,

gehe in einer Schleife durch die Zeilen durch, und addiere die Werte.

Privateer3000 5. Aug 2006 12:15

Re: TStringrid Zellen summieren
 
Hi chris,
danke.
Mit einer if,ob Zelleninhalt gleich "Spieler 1" ist?

marabu 5. Aug 2006 12:58

Re: TStringrid Zellen summieren
 
Hallo.

Der folgende Code soll die Werte in einer Spalte eines StringGrids summieren und nach dem Wert einer anderen Spalte gruppieren. Das Ergebnis ist eine Liste mit Eintrögen der Form "Spieler1=1000".

Delphi-Quellcode:
function CreateScoreList(sg: TStringGrid; iGroup, iValue: Integer): TStrings;
var
  sPlayer: String;
  index, iScore, iRow: Integer;
begin
  Result := TStringList.Create;
  with sg do
    for iRow := FixedRows to Pred(RowCount) do
    begin
      sPlayer := Cells[iGroup, iRow];
      index := Result.IndexOfName(sPlayer);
      if TryStrToInt(Cells[iValue, iRow], iScore) then
        if index < 0
          then Result.Values[sPlayer] := IntToStr(iScore)
//        else Result.Values[sPlayer] := IntToStr(Integer(Result.Values[sPlayer]) + iScore); // StrToInt() statt Integer()
          else Result.Values[sPlayer] := IntToStr(StrToInt(Result.Values[sPlayer]) + iScore);
    end;
end;
Grüße vom marabu

Privateer3000 5. Aug 2006 13:21

Re: TStringrid Zellen summieren
 
vielen dank,
wie wird das ergebnis sichtbar gemacht?
sehe nur TStringList ... entschuldige die blöde Frage ;-)

marabu 5. Aug 2006 14:48

Re: TStringrid Zellen summieren
 
Am einfachsten mit der Komponente TValueListEditor, aber ich weiß nicht ob die bei D6 dazu gehört. Wenn nicht geht auch ein StringGrid oder eine ListBox oder ein Memo:

Delphi-Quellcode:
var
  s: TStrings;
  iRow: Integer;
begin
  s := CreateScoreList(StringGrid, 0, 1);

  // ValueListEditor
  ValueListEditor.Strings.Assign(s);

  // StringGrid
  with ScoreStringGrid do
  begin
    FixedRows := 1; // am Besten
    FixedCols := 1; // schon vorher
    ColCount := 2;  // im OI einstellen

    RowCount := s.Count + FixedRows;
    for i := 0 to to Pred(s.Count) do
    begin
      Cells[0, i + FixedRows] := s.Names[i];
      Cells[1, i + FixedRows] := s.ValueFromIndex[i];
    end;
  end;

  s.Free;
end;
marabu

Privateer3000 5. Aug 2006 17:58

Re: TStringrid Zellen summieren
 
vielen Dank marabu,

ich habe deine funktion
und diese Auswertung genommen:
Delphi-Quellcode:
s := CreateScoreList(elist, 3, 4);
ValueListEditor1.Strings.Assign(s);
s.Free;
elist heisst das grid von die datne drin stehen
3 und 4 die relevanten Spalten.

Der Valuelisteditor bleibt leer
was ist falsch?

viele Grüße

marabu 5. Aug 2006 18:33

Re: TStringrid Zellen summieren
 
Abgesehen von einem Tippfehler in meinem Code in Beitrag #4, welchen ich jetzt korrigiert habe, verlief mein Test fehlerfrei. Bist du sicher, dass du die richtigen Parameter übergibst? Nur ein Beispiel: die dritte Spalte im Grid hat den Index 2, FixedCols werden nicht berücksichtigt.

marabu

Privateer3000 5. Aug 2006 18:46

Re: TStringrid Zellen summieren
 
ja danke marabu,
habs soweit
nur ab einer gewissen summe (glaube 5000)
fängt die funktion an Unsinn zu rechnen
nämlich irre hohe zahlen
was kann das sein?

Privateer3000 5. Aug 2006 18:49

Re: TStringrid Zellen summieren
 
Vielen dank marabu
dein tippfehler hing damit zusammen
ich glaub ich hab es auch halbwege verstanden was da läuft


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:50 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