AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Stringgrid Zeilensumme in Label ausgeben

Ein Thema von unchained · begonnen am 25. Feb 2010 · letzter Beitrag vom 25. Feb 2010
Antwort Antwort
Seite 1 von 3  1 23   
unchained

Registriert seit: 2. Nov 2009
Ort: Bielefeld
20 Beiträge
 
#1

Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 16:45
Hi Leute.

Ich arbeite wieder an einem Kassenprogramm und möchte die Gesamtsumme der Bestellwerte, welche in ein Stringgrid gelistet werden (Button Bestellung Abgeben) mit einem Knopfdruck in einem Label angezeigt haben (Button Gesamtverkauf des Abends).

ich habe schon verschiedene Methoden und Wege versucht aber nichts hat geklappt. Habs mit Stringgrid-Löschen funktion versucht und die irgendwie umzumodeln, dass sie statt löschen, addiert. Naja... erfolglos. Die Suche und Google spucken auch nichts verlässliches aus.

Das hat mir die suche ausgespuckt: Dort wird die Gesamtsumme im Ende des Stringgrids ausgegeben.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
y, x : integer;
summe : double;

begin
summe := 0;
with stringgrid1 do
   begin
    for y:= fixedcols to colcount -1 do
      begin
       for x:= fixedrows to rowcount -3 do
         begin
          summe:= summe + strtofloat(cells[y,x]);
          cells[y,rowcount-1] := floattostr(summe);
         end;
      end;
   end;
end;
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
Miniaturansicht angehängter Grafiken
bh0beup4tonmb3lxw_652.jpg   bh0bhna9lbdncpj2s_170.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 16:48
Die Lösung für das gesamte StringGrid hast Du ja jetzt. Wenn das nur für eine Zeile gelten soll, musst Du die Zeilenschleife eben weglassen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
unchained

Registriert seit: 2. Nov 2009
Ort: Bielefeld
20 Beiträge
 
#3

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 16:59
ja soweit war ich auch dennoch möchte ich das ergebnis ungern am ende der zeile haben, sondern als showmessage oder in einem label.

da liegt der hund begraben
  Mit Zitat antworten Zitat
FrankJ28

Registriert seit: 7. Apr 2008
211 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 17:02
label.caption:=floattostr(summe);

oder verstehe ich deine Frage nicht?
"Sage was du tust, und tue was du sagst"
Johannes Rau
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 17:03
Dann musst Du doch nur die Zeile
Zitat:
cells[y,rowcount-1] := floattostr(summe);
entsprechend ändern. Übrigens würde ich die Ausgabe nach außerhalb der Schleifen verlagern, das kostet ja sonst nur unnötig Zeit.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
unchained

Registriert seit: 2. Nov 2009
Ort: Bielefeld
20 Beiträge
 
#6

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 17:10
also so siehts aus:

"ergebnis" ist der wert der aus einer bestellung hervorgeht, quasi der einzelbestellwert.
Im stringgrid werden viele dieser einzelbestellwerte aufgelistet und sollen über "button6" addiert und in einem Label ausgegeben werden.
Delphi-Quellcode:
procedure TForm1.Button6Click(Sender: TObject);

var
y, x : integer;
ergebnis : double;

begin
ergebnis := 0;
with stringgrid1 do
    begin
       for x:= fixedrows to rowcount -3 do
         begin
          ergebnis:= ergebnis + strtofloat(cells[y,x]);

         end;
      end;
 label21.caption:=floattostr(ergebnis);
   end;



end.
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.269 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 17:19
Hallo,

kleine Anmerkung.

Hast du die einzelnen Positionen nicht eh schon in deinem Programm (TList ?)

Dann würde ich dort summieren.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 17:36
Da hat Heiko vollkommen recht, aber falls nicht versuch es mal hiermit (heruntergetippt und nicht getestet):
Delphi-Quellcode:
function GridRowSum(const TheGrid: TStringGrid; RowIndex: integer; IgnoreFixedCols: Boolean = true): double;
var i, Start: integer;
begin
  Result := 0;
  if (RowIndex < 0) or (RowIndex >= TheGrid.RowCount) then
    raise Exception.CreateFmt('Zeilenindex %d ist nicht erreichbar',[RowIndex]);
  if IgnoreFixedCols then
    Start := TheGrid.FixedCols
  else
    Start := 0;
  for i := Start to TheGrid.ColCount - 1 do
    Result := Result + StrToFloatDef(TheGrid.Cells[i,RowIndex],0);
end;
[edit] Abfrage auf RowIndex < 0 eingebaut, falls später mal jemand auf diesen Thread stößt [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
unchained

Registriert seit: 2. Nov 2009
Ort: Bielefeld
20 Beiträge
 
#9

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 18:06
Sry, das funktioniert leider nicht.

Es funktioniert ja auch mit der funktion "Zellen löschen", dass auf alle zellen zugegriffen wird und diese "clear" werden.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
 var
  I: Integer;
begin
  for I := 0 to StringGrid1.RowCount - 1 do
    StringGrid1.Rows[I].Clear();
  for I := 0 to StringGrid2.RowCount - 1 do
    StringGrid2.Rows[I].Clear();
  for I := 0 to StringGrid1.ColCount - 1 do
    StringGrid1.Cols[I].Clear();
  for I := 0 to StringGrid2.ColCount - 1 do
    StringGrid2.Cols[I].Clear();
end;
Klappt das nicht auch mit der Funktion "Addieren"? Dass ich quasi auf alle Zellen zugreife und sie statt "clear" einfach addiere?

[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Stringgrid Zeilensumme in Label ausgeben

  Alt 25. Feb 2010, 18:08
Mit "das funktioniert nicht" kann ich leider nichts anfangen. Kompiliert es nicht oder kommt nicht das erwartete Ergebnis? Wie hast Du es aufgerufen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:46 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