![]() |
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 |
Re: TStringrid Zellen summieren
Moin Privateer,
gehe in einer Schleife durch die Zeilen durch, und addiere die Werte. |
Re: TStringrid Zellen summieren
Hi chris,
danke. Mit einer if,ob Zelleninhalt gleich "Spieler 1" ist? |
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:
Grüße vom marabu
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; |
Re: TStringrid Zellen summieren
vielen dank,
wie wird das ergebnis sichtbar gemacht? sehe nur TStringList ... entschuldige die blöde Frage ;-) |
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:
marabu
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; |
Re: TStringrid Zellen summieren
vielen Dank marabu,
ich habe deine funktion und diese Auswertung genommen:
Delphi-Quellcode:
elist heisst das grid von die datne drin stehen
s := CreateScoreList(elist, 3, 4);
ValueListEditor1.Strings.Assign(s); s.Free; 3 und 4 die relevanten Spalten. Der Valuelisteditor bleibt leer was ist falsch? viele Grüße |
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 |
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? |
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 04:30 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-2025 by Thomas Breitkreuz