![]() |
Berechnung zum StringGrid
Ich habe ein StringGrid in meinem Projekt
Delphi-Quellcode:
Jetzt möchte ich in einem Editfeld die Summe aller im StringGrid unter der Überschrift "Gesammt"
procedure TArtikelerfassungForm.SetzeArtikelStringGrid;
begin ArtikelStringGrid.rowCount := 2; ArtikelStringGrid.colCount := 7; ArtikelStringGrid.cells[0,0] := 'Nr'; ArtikelStringGrid.cells[1,0] := 'Abteilung'; ArtikelStringGrid.cells[2,0] := 'Abteilung Nr.'; ArtikelStringGrid.cells[3,0] := 'Artikel'; ArtikelStringGrid.cells[4,0] := 'Preis'; ArtikelStringGrid.cells[5,0] := 'Anzahl'; ArtikelStringGrid.cells[6,0] := 'Gesammt'; end; aufgelisteten Zahlen die Gesamtsumme dieser haben. :gruebel: |
Re: Berechnung zum StringGrid
Hi!
Und? ;) Was hast du denn bisher versucht, um dein Ziel zu erreichen? Wie ich deinem Code entnehmen kann, weißt du ja, wie du einzelne Zellen ansprechen kannst. Daher wäre es eine mögliche Lösung die entsprechenden Zellen durchzugehen und aufzusummieren - die andere wäre die, es direkt beim Einfügen ins Stringgrid aus der Datenquelle (falls es sich nicht um Benutzeringaben handelt) zu summieren. HTH Grüße, Frederic P.S. Gesamt |
Re: Berechnung zum StringGrid
Dafür habe ich ja schon eine weile gebraucht :?
jetzt fehlt mir der nächste Ansatz ich wollte das so versuchen
Delphi-Quellcode:
muß das aber wohl auch in einer schleife Abfragen
SummeLagerwert := SummeLagerwert + EditGesamtpreis.Text;
|
Re: Berechnung zum StringGrid
Hi!
Was ist denn SummeLagerwert? Schleife ist aber ein sehr guter Ansatz. Grüße, Frederic |
Re: Berechnung zum StringGrid
SummeLager sollte am Schluß dann mein Endbertag werden
der sich bei jeder ausgefüllten Zeile dann hochrechnet |
Re: Berechnung zum StringGrid
Hi!
Auch hier nochmal meine Frage: Wie kommen denn die Werte ins Stringgrid? Wann soll diese Gesamtsumme gebildet werden - auf Knopfdruck? Grüße, Frederic |
Re: Berechnung zum StringGrid
ach so, sorry
ich habe das so gelöst
Delphi-Quellcode:
dazu habe ich dann einen recorder den haben wir so gestalltet
procedure TArtikelerfassungForm.Button5Click(Sender: TObject);
begin Rec.AbteilungName := EditAbteilung.Text; Rec.AbteilungNr := EditAbteilungNr.Text; Rec.Artikel := EditArtikelBezeichnung.Text; Rec.ArtikelAnzahl := EditArtikelAnzahl.Text; Rec.ArtikelWert := EditEinzelpreis.Text; Rec.ArtikelGesamtpreis := EditGesamtpreis.Text; Rec.Fremdobjekt := EditFremdobjekt.Text; result := true; Rec := rec; Artikel.add(Rec); Artikel.Show(ArtikelStringGrid); InitArtikelerfassungRec(Rec); init(Rec); // SummeLagerwert := SummeLagerwert + EditGesamtpreis.Text; end;
Delphi-Quellcode:
type TArtikelerfassungRec = packed record
Datensatz:ShortString; AbteilungName:ShortString; AbteilungNr:ShortString; Artikel:ShortString; ArtikelAnzahl:ShortString; ArtikelWert:ShortString; ArtikelGesamtpreis:ShortString; ArtikelVerbleib:ShortString; Fremdobjekt:ShortString; |
Re: Berechnung zum StringGrid
Hi!
Leider sind diese Code-Schnipsel noch nicht sooo aussagekräftig. Was ist denn Rec, was ist rec, was ist Artikel und was machen die diversen Methoden? Grüße, Frederic |
Re: Berechnung zum StringGrid
8) irgendwann werde ich auch die gedankengänge der Programmierer verstehen.
ich hoffe das ich hiermit auf dem richtigen weg bin
Delphi-Quellcode:
procedure TArtikelerfassungForm.Init(Rec:TArtikelerfassungRec);
var i:integer; begin EditArtikelBezeichnung.Text := Rec.Artikel; EditArtikelAnzahl.Text := Rec.ArtikelAnzahl; EditEinzelPreis.Text := Rec.ArtikelWert; EditGesamtPreis.Text := Rec.ArtikelGesamtPreis; EditVerbleibWare.ItemIndex := 0; for i:=1 to EditVerbleibWare.Items.Count-1 do begin if Rec.ArtikelVerbleib = EditVerbleibWare.Items[i] then begin EditVerbleibWare.ItemIndex := i; break; end; end; EditFremdObjekt.Text := Rec.FremdObjekt; end; |
Re: Berechnung zum StringGrid
Hi!
Ich würde dort einsetzen, wo du ins Stringgrid einträgst. Das wäre wohl dann an der Stelle, die du ![]() Grüße, Frederic |
Re: Berechnung zum StringGrid
ok, dit werde ich doch auch gleich mal versuchen
|
Re: Berechnung zum StringGrid
mein Versuch
Delphi-Quellcode:
jetzt zeigt er mir aber einen "Inkompatible Typen" als Fehler
Var
SummeGesammtwert : double; ... procedure CArtikelerfassung.Show(ArtikelGrid:TStringGrid); var i:integer; pRec:pArtikelerfassungRec; begin SummeGesammtwert :=0; if Artikel.Count = 0 then begin ArtikelGrid.RowCount := 2; ArtikelGrid.cells[0,1] := '-'; ArtikelGrid.cells[1,1] := '-'; ArtikelGrid.cells[2,1] := '-'; ArtikelGrid.cells[3,1] := '-'; ArtikelGrid.cells[4,1] := '-'; end else begin ArtikelGrid.RowCount := Artikel.Count+1; for i:=0 to Artikel.Count-1 do begin pRec := Artikel.Items[i]; ArtikelGrid.cells[0,i+1] := IntToStr(i+1); ArtikelGrid.cells[1,i+1] := pRec^.AbteilungName; ArtikelGrid.cells[2,i+1] := pRec^.AbteilungNr; ArtikelGrid.cells[3,i+1] := pRec^.Artikel; ArtikelGrid.cells[4,i+1] := pRec^.ArtikelWert; ArtikelGrid.cells[5,i+1] := pRec^.Anzahl; ArtikelGrid.cells[5,i+1] := pRec^.Gesammtpreis; SummeGesammtwert := SummeGesammtwert + pRec^.Gesammtpreis; end; end; end; |
Re: Berechnung zum StringGrid
Hi!
Ist pRec^.Gesammtpreis zufällig ein String? Grüße, Frederic P.S. Auch hier nochmal die Bitte nicht zu pushen, sondern Sachen nachzueditieren. |
Re: Berechnung zum StringGrid
ja, geht in ein editfeld ja über.
habe ich in keiner weise umgewandelt :gruebel: (glaube ich zumindest) worin liegt da das problem ? |
Re: Berechnung zum StringGrid
Hi!
Summegesamtwert ist ein Double und du kannst nicht einfach einen String zu einer Zahl dazuaddieren. Du musst also zuerst den String umwandeln :arrow: ![]() Grüße, Frederic |
Re: Berechnung zum StringGrid
na klasse, ich war zufrieden das ich bis hierhin es geschaft hatte.
jetzt das ganze umwandeln und dann bestimmt wieder irgendwie zuordnen und so ich glaube ich brauch erst mal ne dusche :party: und dann die bücher und ne hilfe datei :warn: und wieder viel zeit :cry: |
Re: Berechnung zum StringGrid
Ich will ja nicht meckern, aber Du solltest Dich einmal mit elementaren Datentypen und deren Konvertierung auseinandersetzen.
|
Re: Berechnung zum StringGrid
so ich habe mich durchgekämpft und es wohl geschaft. Jedenfalls zeigt er mir keinen fehler mehr an und ich mußte hier und da einiges ändern.
aber halb so schlimmmmmmmmm. ich will das ja hier lernen. jetzt habe ich aber ein scheinbar kleines problem. wie spreche ich jetzt meinen wert an damit ich ihm in meinem Editfeld sehe. scheinbar sehe ich den wald vor lauter bäumen (bit´s)nicht. ich brauche hier einen denkanstoß.
Delphi-Quellcode:
das ist in meiner Artikelverwaltung.pas
rocedure CArtikelerfassung.Show(ArtikelGrid:TStringGrid);
var i:integer; pRec:pArtikelerfassungRec; begin // Initialisierung SummeGesamtwert := 0; // Verarbeitung und Ausgabe if Artikel.Count = 0 then begin ArtikelGrid.RowCount := 2; ArtikelGrid.cells[0,1] := '-'; ArtikelGrid.cells[1,1] := '-'; ArtikelGrid.cells[2,1] := '-'; ArtikelGrid.cells[3,1] := '-'; ArtikelGrid.cells[4,1] := '-'; ArtikelGrid.cells[5,1] := '-'; ArtikelGrid.cells[6,1] := '-'; ArtikelGrid.cells[7,1] := '-'; ArtikelGrid.cells[8,1] := '-'; end else begin ArtikelGrid.RowCount := Artikel.Count+1; for i:=0 to Artikel.Count-1 do begin // Tabellenzeilen ausgeben, dabei fehlende Werte berechnen pRec := Artikel.Items[i]; ArtikelGrid.cells[0,i+1] := IntToStr(i+1); ArtikelGrid.cells[1,i+1] := pRec^.AbteilungName; ArtikelGrid.cells[2,i+1] := pRec^.AbteilungNr; ArtikelGrid.cells[3,i+1] := pRec^.Artikel; ArtikelGrid.cells[4,i+1] := FormatFloat('#,##0.00 €', pRec^.ArtikelWert); ArtikelGrid.cells[5,i+1] := IntToStr(pRec^.ArtikelAnzahl); GesamtPreis:= pRec^.ArtikelAnzahl + pRec^.ArtikelWert; ArtikelGrid.cells[6,i+1] := FormatFloat('#,##0.00 €', pRec^.ArtikelGesamtpreis); ArtikelGrid.cells[7,i+1] := pRec^.ArtikelVerbleib; ArtikelGrid.cells[8,i+1] := pRec^.Fremdobjekt; SummeGesamtwert:= SummeGesamtwert + GesamtPreis; end; end; end; und nun wollte ich das unter meiner Artikelerfassung im Edit15.text mir anzeigen lassen. wie bekomme ich den wert den aber rüber? mit dem Stringgrid habe ich das ja geschaft
Delphi-Quellcode:
jetzt habe ich aber in dem formular noch ein einzelnes editfeld, wo dann der gesamtwert aus dem stringgrit auftauchen soll von allen feldern.
procedure TArtikelerfassungForm.Button5Click(Sender: TObject);
var s:string; begin s := EditAbteilung.Text; if length(s)=0 then begin showmessage('Fehlerhafte Eingabe in der Abteilung'); EditAbteilung.setfocus; exit; end; s := EditAbteilungNr.Text; if length(s)=0 then begin showmessage('Fehlerhafte Eingabe zur Abteilung-Nr'); EditAbteilungNr.setfocus; exit; end; s := EditArtikelBezeichnung.Text; if length(s)=0 then begin showmessage('Fehlerhafte Eingabe zum Artikel'); EditArtikelBezeichnung.setfocus; exit; end; s := EditArtikelAnzahl.Text; if length(s)=0 then begin showmessage('Fehlerhafte Eingabe Mänge der Einzelnen Artikel'); EditArtikelAnzahl.setfocus; exit; end; s := EditEinzelpreis.Text; if length(s)=0 then begin showmessage('Fehlerhafte Eingabe Mänge der Einzelnen Artikel'); EditEinzelpreis.setfocus; exit; end; if EditVerbleibWare.ItemIndex = 0 then begin showmessage('Fehlerhafte Eingabe zum Verbleib der Ware'); EditVerbleibWare.setfocus; exit; end; Rec.AbteilungName := EditAbteilung.Text; Rec.AbteilungNr := EditAbteilungNr.Text; Rec.Artikel := EditArtikelBezeichnung.Text; Rec.ArtikelAnzahl := StrToInt(EditArtikelAnzahl.Text); Rec.ArtikelWert := StrToFloat(EditEinzelpreis.Text); Rec.ArtikelGesamtpreis := StrToFloat(EditGesamtpreis.Text);; Rec.Fremdobjekt := EditFremdobjekt.Text; result := true; Rec := rec; Artikel.add(Rec); Artikel.Show(ArtikelStringGrid); InitArtikelerfassungRec(Rec); init(Rec); end; :gruebel: |
Re: Berechnung zum StringGrid
Welche Gesamtzahl welcher Felder? Du könntest doch Deine Artikelliste erneut durchlaufen und aufaddieren, oder verstehe ich Dich falsch? Übrigens:
Zitat:
|
Re: Berechnung zum StringGrid
den gesamtwert von
SummeGesamtwert:= SummeGesamtwert + GesamtPreis; und nun sollte er mir das unter Edit15.text := summeGesamtwert ausgeben. ich hab ne denkbloccccckkkkkade |
Re: Berechnung zum StringGrid
ich habe auf mein Brett nun eingehackt:
Edit12.text := SummeGesamtwert; Jetzt sagt mir der Kasten: Inkompatible Typen: String und Double und mein Kopf raucht :wall: |
Re: Berechnung zum StringGrid
Delphi-Quellcode:
Edit12.text := FloatToStr(SummeGesamtwert);
|
Re: Berechnung zum StringGrid
jups, dot war es wohl
und ich dachte wenn ich das einmal aufrufe mit demFloat das dit reicht. danke dir jetzt kann ich ruhig schlafen :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 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