![]() |
Stringgrid Zeilensumme in Label ausgeben
Liste der Anhänge anzeigen (Anzahl: 2)
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:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
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; |
Re: Stringgrid Zeilensumme in Label ausgeben
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.
|
Re: Stringgrid Zeilensumme in Label ausgeben
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 |
Re: Stringgrid Zeilensumme in Label ausgeben
label.caption:=floattostr(summe);
oder verstehe ich deine Frage nicht? |
Re: Stringgrid Zeilensumme in Label ausgeben
Dann musst Du doch nur die Zeile
Zitat:
|
Re: Stringgrid Zeilensumme in Label ausgeben
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:
[edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit]
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. |
Re: Stringgrid Zeilensumme in Label ausgeben
Hallo,
kleine Anmerkung. Hast du die einzelnen Positionen nicht eh schon in deinem Programm (TList ?) Dann würde ich dort summieren. Heiko |
Re: Stringgrid Zeilensumme in Label ausgeben
Da hat Heiko vollkommen recht, aber falls nicht versuch es mal hiermit (heruntergetippt und nicht getestet):
Delphi-Quellcode:
[edit] Abfrage auf RowIndex < 0 eingebaut, falls später mal jemand auf diesen Thread stößt :roll: [/edit]
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; |
Re: Stringgrid Zeilensumme in Label ausgeben
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:
Klappt das nicht auch mit der Funktion "Addieren"? Dass ich quasi auf alle Zellen zugreife und sie statt "clear" einfach addiere?
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; [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: Stringgrid Zeilensumme in Label ausgeben
Mit "das funktioniert nicht" kann ich leider nichts anfangen. Kompiliert es nicht oder kommt nicht das erwartete Ergebnis? Wie hast Du es aufgerufen?
|
Re: Stringgrid Zeilensumme in Label ausgeben
er kompiliert nicht.
![]() ![]() [edit=mkinzler]Grafik entfernt und dem Beitrag angehängt Mfg, mkinzler[/edit] |
Re: Stringgrid Zeilensumme in Label ausgeben
Und mit welcher Meldung?
|
Re: Stringgrid Zeilensumme in Label ausgeben
pardon, habe die bilder angehängt.
[Fehler] Unit1.pas(525): BEGIN erwartet, aber END gefunden [Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden |
Re: Stringgrid Zeilensumme in Label ausgeben
Du hast die Funktion ja auch an die völlig falsche Stelle kopiert. Am besten schiebst Du sie gleich unter das {$R.dfm} unter implementation.
|
Re: Stringgrid Zeilensumme in Label ausgeben
Kopiere ich die Funktion:
function GridRowSum(const TheGrid: TStringGrid; RowIndex: integer; IgnoreFixedCols: Boolean = true): double; an die benannte Stelle werden weitere Fehler angezeigt. [Fehler] Unit1.pas(140): ';' erwartet, aber '.' gefunden ------------------------------------------------------------------------------------------------------------- implementation {$R *.dfm} function GridRowSum(const TheGrid: TStringGrid; RowIndex: integer; IgnoreFixedCols: Boolean = true): double; procedure TForm1.Button1Click(Sender: TObject); // Bestellung aufgeben begin Label17.Font.Color := clred; button1.Caption:='Erhalten'; sleep (400); button1.caption:='Bestellung aufgeben'; inc (anzahl); // Zähler für Kunden |
Re: Stringgrid Zeilensumme in Label ausgeben
Und wenn Du unter Button6Click einmal begin und end schreibst? Die fehlen in der Grafik nämlich.
|
Re: Stringgrid Zeilensumme in Label ausgeben
Grad probiert. Das ändert leider nichts. :(
|
Re: Stringgrid Zeilensumme in Label ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
ich habs mal komplett angehängt.
|
Re: Stringgrid Zeilensumme in Label ausgeben
Du hast die Projektdatei angehängt, nimm stattdessen mal die Unit.
|
Re: Stringgrid Zeilensumme in Label ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
hier die unit :)
|
Re: Stringgrid Zeilensumme in Label ausgeben
Liste der Anhänge anzeigen (Anzahl: 1)
Wie ist es hiermit (keine Garantie, da unter Notepad bearbeitet)?
|
Re: Stringgrid Zeilensumme in Label ausgeben
Ich danke dir vielmals !!!! Es funktioniert super. Die Lösung ist ja dann unter Button6 recht simpel. Manchmal seh ich den Wald vor lauter Bäumen nicht :D.
Nochmals Dankeschön ! :) Der Abend ist gerettet. |
Re: Stringgrid Zeilensumme in Label ausgeben
Das war aber auch eine schwere Geburt :zwinker:
|
Re: Stringgrid Zeilensumme in Label ausgeben
Bis man erstmal weiß was das Problem ist :D. Hab mich auch nen Wolf gegoogelt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 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 by Thomas Breitkreuz