AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringrid Zellen summieren

Ein Thema von Privateer3000 · begonnen am 5. Aug 2006 · letzter Beitrag vom 8. Aug 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

TStringrid Zellen summieren

  Alt 5. Aug 2006, 12:52
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 12:54
Moin Privateer,

gehe in einer Schleife durch die Zeilen durch, und addiere die Werte.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 13:15
Hi chris,
danke.
Mit einer if,ob Zelleninhalt gleich "Spieler 1" ist?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 13:58
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
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 14:21
vielen dank,
wie wird das ergebnis sichtbar gemacht?
sehe nur TStringList ... entschuldige die blöde Frage
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 15:48
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
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 18:58
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 19:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 19:46
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?
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: TStringrid Zellen summieren

  Alt 5. Aug 2006, 19:49
Vielen dank marabu
dein tippfehler hing damit zusammen
ich glaub ich hab es auch halbwege verstanden was da läuft
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:54 Uhr.
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