![]() |
Strings in Stringgrid Spalten mit Währung Formatieren
Hallo suche nach einer Lösung ein Fixes Format für Spalten in einem Stringgrid.
Ist für ein Kassenbuch Programm. Die Spalten sollten das Format #,## € Ausgeben bzw. -#,## €. Habe schon mit einer Schleife Versucht.
Delphi-Quellcode:
Gleitkommawert erkennt er nicht.
form1.ElTreeStringGrid1.Cells[4,j] := Format('%.2f', [Gleitkommawert]);
Kann mir jemand helfen?? |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Heist die Variable auch so?
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
nee er soll die spalte 4 vom stringgrid formatieren .
welche Variable muss denn rein??? |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Delphi-Quellcode:
for j:= form1.ElTreeStringGrid1.row to form1.ElTreeStringGrid1.RowCount-1 do
begin Summe1 := strtofloatdef(form1.eltreestringgrid1.cells[2,j],0) + strtofloatdef(form1.eltreestringgrid1.cells[3,j],0); Summe2 := strtofloatdef(form1.eltreestringgrid1.cells[4,j-1],0); Ergebnis := Summe1 + Summe2; form1.eltreestringgrid1.cells[4,j] := Format('%.2f', [Floattostr(ergebnis)]); |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Entscheid' Dich
Delphi-Quellcode:
oder
format
Delphi-Quellcode:
Du kannst natürlich auch
FloattoStr
Delphi-Quellcode:
nutzen.
Format(%S ,floattostr(wert))
Gruß K-H |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Mit format aber die Ausgabe im stringrid ist ne einfache Zahl ohne Währung und nun??
Delphi-Quellcode:
for j:= form1.ElTreeStringGrid1.row to form1.ElTreeStringGrid1.RowCount-1 do
begin Summe1 := strtofloatdef(form1.eltreestringgrid1.cells[2,j],0) + strtofloatdef(form1.eltreestringgrid1.cells[3,j],0); Summe2 := strtofloatdef(form1.eltreestringgrid1.cells[4,j-1],0); Ergebnis := Summe1 + Summe2; form1.eltreestringgrid1.cells[4,j] := Format('%s', [Floattostr(ergebnis)]); end; wenn ich 5 eingebe soll er 5,00 € anzeigen die eingegebenen Werte sollen aber auch Später wieder mit in eine Addition genommen werden. ein € hinter zusetzen ist kein Problem aber wenn dies ein mal drinne ist zeigt er mir fehler an das 5,00 € z.b. kein float wert ist. |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Delphi-Quellcode:
eltreestringgrid1.cells[4,j] := Format('%.2n €', [Ergebnis]);
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
deddyh funktioniert aber wenn ich mit einer eingabe mache kommt ein fehler . '%.2n €' ungültiges argument
Delphi-Quellcode:
stringgrid1.cells[2,i]:=Format('%.2n €', [Edit3.text])
Hier mal der komplette code
Delphi-Quellcode:
procedure TForm7.Button2Click(Sender: TObject);
var i,j:integer; Summe1,Summe2,Ergebnis: double; begin edit5.text:=''; edit6.text:=''; edit7.Text:=''; if label11.caption='b' then i:=form1.ElTreeStringGrid1.Row else i:=form1.ElTreeStringGrid1.RowCount-1; form1.eltreestringgrid1.Cells[0,i]:=edit1.Text; form1.eltreestringgrid1.Cells[1,i]:=edit4.Text; form1.eltreestringgrid1.Cells[2,i]:=Format('%.2n €', [Edit3.text]); form1.eltreestringgrid1.Cells[3,i]:=''; form1.eltreestringgrid1.Cells[5,i]:=edit2.Text; form1.eltreestringgrid1.Cells[6,i]:=memo1.Text; form7.edit1.Text:=''; form7.edit4.Text:=''; form7.edit3.Text:=''; form7.edit2.Text:=''; form7.memo1.Text:=''; form7.edit5.Text:=''; form7.edit6.Text:=''; form7.edit7.Text:=''; form7.edit8.Text:=''; form7.memo2.Text:=''; if label11.Caption='b' then j:= form1.ElTreeStringGrid1.Row; for j:= form1.ElTreeStringGrid1.row to form1.ElTreeStringGrid1.RowCount-1 do begin Summe1 := strtofloatdef(form1.eltreestringgrid1.cells[2,j],0) + strtofloatdef(form1.eltreestringgrid1.cells[3,j],0); Summe2 := strtofloatdef(form1.eltreestringgrid1.cells[4,j-1],0); Ergebnis := Summe1 + Summe2; form1.eltreestringgrid1.cells[4,j] := Format('%.2n €', [Ergebnis]); end; if label11.Caption='' then for j:= 1 to form1.ElTreeStringGrid1.RowCount-1 do begin Summe1 := strtofloatdef(form1.eltreestringgrid1.cells[2,j],0) + strtofloatdef(form1.eltreestringgrid1.cells[3,j],0); Summe2 := strtofloatdef(form1.eltreestringgrid1.cells[4,j-1],0); Ergebnis := Summe1 + Summe2; form1.eltreestringgrid1.cells[4,j] := Format('%.2n €', [Ergebnis]); end; if SysUtils.FileExists('c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+'.xls') then DeleteFile('c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+'.xls'); SaveAsExcelFile(form1.eltreestringGrid1, 'Tabelle1', 'c:\Programme\Vereintool\Daten\Kassenbuch\'+FormatDateTime('yyyy', now)+'\Handkasse '+FormatDateTime('yyyy', now)+'.xls'); close; end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Es wäre vielleicht nicht die schlechteste Idee, den Code ordentlich zu formatieren und die Logik von der Darstellung zu trennen, da steigt ja niemand durch :shock:
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Okay versuch ichs mal so
Delphi-Quellcode:
if label11.caption='b' then i:=form1.ElTreeStringGrid1.Row //Hiermit werden die schon vorhandenen Werte geändert
else i:=form1.ElTreeStringGrid1.RowCount-1;//damit die neuen form1.eltreestringgrid1.Cells[0,i]:=edit1.Text; form1.eltreestringgrid1.Cells[1,i]:=edit4.Text; form1.eltreestringgrid1.Cells[2,i]:=edit3.text;//--> wenn ich hier jetzt die Formatierung einbring kann er nicht rechnen form1.eltreestringgrid1.Cells[3,i]:=''; form1.eltreestringgrid1.Cells[5,i]:=edit2.Text; form1.eltreestringgrid1.Cells[6,i]:=memo1.Text;
Delphi-Quellcode:
if label11.Caption='b' then j:= form1.ElTreeStringGrid1.Row;// b steht wenn ich werte im stringrid ändern möchte
{hier beginnt die berechnung für die eingegebenen werte} for j:= form1.ElTreeStringGrid1.row to form1.ElTreeStringGrid1.RowCount-1 do begin Summe1 := strtofloatdef(form1.eltreestringgrid1.cells[2,j],0) + strtofloatdef(form1.eltreestringgrid1.cells[3,j],0); Summe2 := strtofloatdef(form1.eltreestringgrid1.cells[4,j-1],0); Ergebnis := Summe1 + Summe2; form1.eltreestringgrid1.cells[4,j] := Format('%.2n €', [Ergebnis]); end;// hier endet sie if label11.Caption='' then // wenns leer ist dann sind es neue Daten die eingefügt werden {Hier fängt wieder die berechnung an} for j:= 1 to form1.ElTreeStringGrid1.RowCount-1 do begin Summe1 := strtofloatdef(form1.eltreestringgrid1.cells[2,j],0) + strtofloatdef(form1.eltreestringgrid1.cells[3,j],0); Summe2 := strtofloatdef(form1.eltreestringgrid1.cells[4,j-1],0); Ergebnis := Summe1 + Summe2; form1.eltreestringgrid1.cells[4,j] := Format('%.2n €', [Ergebnis]); end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Ich sag ja: Du rechnest mit der Darstellung der Werte, nicht mit den Werten selbst. Daher bekommst Du Probleme, wenn Du diese Darstellung änderst.
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
wie kann ich das am besten ändern???
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Indem Du Dich hinsetzt, und mit einem Bleistift und Papier programmierst.
Zunächst solltest Du dich fragen was Du hast( was steht den in spalte2,3 und vier?) Ist das vielleicht Nettobetrag,MWST und Bruttobetrag? dafür würde sich z.B. ein Record anbieten. Wenn Du mit der Datendefinition fertig bist, dann schreib einmal die notwenendigen Arbeitschritte auf, und bring sie in einen logischen Zusammenhang (ablaufplan). Jetzt mußt Du nur nochdas alles in Delphi übersetzen, und eine entsprechende Oberfläche bauen. Fertig. Gruß K-H |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
so ähnlich habe ich auch begonnen. ich möchte das alle daten in den 3 Spalten 0,00 € als Format haben sollen (bzw. so visuell wiedergegeben werden sollen)
Die Berechnung der Spalten funktioniert. jedoch nicht mit den Format werten. Wie kann ich diese Trennen??? |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Datenhaltung von der Anzeige trennen ( du verwendest das Grid gleichzeitig als Datenspeicher)
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
japp ist richtig habe nur noch nicht viel mit records gearbeitet.
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Wie wäre es denn mit so etwas?
Delphi-Quellcode:
Das in eine TObjectList gesteckt (Bezeichner für ErsteZahl und ZweiteZahl natürlich an den tatsächlichen Zweck angepasst) und ausgeben, sollte recht einfach machbar sein.
type
TIrgendwas = class private FErsteZahl, FZweiteZahl: double; procedure SetErsteZahlAsString(const Value: string); procedure SetZweiteZahlAsString(const Value: string); function GetErsteZahlAsString: string; function GetZweiteZahlAsString: string; public property ErsteZahl: double read FErsteZahl write FErsteZahl; property ZweiteZahl: double read FZweiteZahl write FZweiteZahl; property ErsteZahlAsString: string read GetErsteZahlAsString write SetErsteZahlAsString; property ZweiteZahlAsString: string read GetZweiteZahlAsString write SetZweiteZahlAsString; end; ... { TIrgendwas } function TIrgendwas.GetErsteZahlAsString: string; begin Result := Format('%.2n', [FErsteZahl]); end; function TIrgendwas.GetZweiteZahlAsString: string; begin Result := Format('%.2n', [FZweiteZahl]); end; procedure TIrgendwas.SetErsteZahlAsString(const Value: string); begin if not TryStrToFloat(Value, FErsteZahl) then raise Exception.CreateFmt('Ungültige Eingabe: %s', [Value]); end; procedure TIrgendwas.SetZweiteZahlAsString(const Value: string); begin if not TryStrToFloat(Value, FZweiteZahl) then raise Exception.CreateFmt('Ungültige Eingabe: %s', [Value]); end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
sieht erstmal viel aus wie krieg ich das in meinen code eingebunden??
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Nehmen wir mal an, Du hast so eine TObjectList deklariert und instanziert. Dann machen wir mal ein Eingabeformular mit 2 Edits. Auf ButtonClick erstellen wir ein neues Objekt und fügen es der Liste hinzu. Bei Fehleingaben sagen wir dem Benutzer Bescheid und entsorgen das gerade Objekt gleich wieder. Ungetestet:
Delphi-Quellcode:
procedure TEingabeform.ButtonDingsdaClick(Sender: TObject);
var Irgendwas: TIrgendwas; begin Irgendwas := TIrgendwas.Create; try Irgendwas.ErsteZahlAsString := edtErsteZahl.Text; Irgendwas.ZweiteZahlAsString := edtZweiteZahl.Text; Objektliste.Add(Irgendwas); except on E: Exception do begin MessageBox(0, PChar(E.Message), nil, MB_OK or MB_ICONERROR); Irgendwas.Free; end; end; end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Zitat:
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Delphi-Quellcode:
Die Liste hat einen Konstruktor-Parameter namens OwnsObjects mit Standardwert true. Ist dieser gesetzt, gibt die Liste die enthaltenen Objekte automatisch frei, sobald diese aus ihr entfernt werden.
uses ..., Contnrs;
... DeineListe := TObjectList.Create; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Delphi-Quellcode:
Was haben denn die letzten code zeilen zu sagen???
except
on E: Exception do begin MessageBox(0, PChar(E.Message), nil, MB_OK or MB_ICONERROR); Irgendwas.Free; end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Zitat:
Mit Grundlagenwissen ist bei dir aber auch nicht weit her. |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
okay wie bekomme ich meine daten wieder Ausgegeben???
Habe die Eingabe jetzt so
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var deineliste: Tirgendwas; begin Deineliste := Tirgendwas.Create; try deineListe.ErsteZahlAsString := edit1.Text; deineliste.ZweiteZahlAsString := edit2.Text; deineliste.Add(deineliste); except on E: Exception do begin MessageBox(0, PChar(E.Message), nil, MB_OK or MB_ICONERROR); deineliste.Free; end; end; end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Die Liste muss vom Typ TObjectList sein, die hinzuzufügenden Objekte vom Typ TIrgendwas (oder wie Du die Klasse auch immer nennen willst).
[edit] Und Du gibst die Liste nur im Fehlerfall frei, das kann ja auch nicht richtig sein. [/edit] |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Okay habs mal umgeschrieben
Delphi-Quellcode:
Die wiedergabe möchte ich so machen kommt aber nur 0,00 raus
type
Tirgendwas = class(tobjectlist) .... procedure TForm1.Button1Click(Sender: TObject); var irgendwas: Tirgendwas; begin irgendwas := Tirgendwas.Create; try irgendwas.ErsteZahlAsString := edit1.Text; irgendwas.ZweiteZahlAsString := edit2.Text; irgendwas.Add(irgendwas); except on E: Exception do begin MessageBox(0, PChar(E.Message), nil, MB_OK or MB_ICONERROR); irgendwas.Free; end; end; end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var irgendwas: Tirgendwas; begin edit3.text := irgendwas.ErsteZahlAsString; end; |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Solange irgendwas eine lokale Vaiable ist, funktioniert das nur in der Methode, in der du es deklariert hast. Die gleichnamige Variable in der anderen Methode ist eine andere lokale Variable. Du musst diese Global oder besser als Attribut der Klasse anblegen.
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Das heist es geht nur so
Delphi-Quellcode:
dann wir dauch alles richtig ausgegeben. Gut soweit erstmal
procedure TForm1.Button1Click(Sender: TObject);
var irgendwas: Tirgendwas; begin irgendwas := Tirgendwas.Create; try irgendwas.ErsteZahlAsString := edit1.Text; irgendwas.Add(irgendwas); edit3.text := irgendwas.ErsteZahlAsString;<------------- except on E: Exception do begin MessageBox(0, PChar(E.Message), nil, MB_OK or MB_ICONERROR); irgendwas.Free; end; end; end; jetzt muss ich nur noch die Stringrid.cells (Spalten und berechnungen eingeben) Richtig??? |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Nein.
Delphi-Quellcode:
ist lokal!!!!!!
procedure TForm1.Button1Click(Sender: TObject);
var irgendwas: Tirgendwas; Du solltestest dich wirklich mit den Grundlagen befassen. |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
wie komme ich an diese ran?
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
An was? Grundlagen?
Bücher Unterricht Tutorials Delphi-Hilfe/PDF Anleitung ![]() ![]() ![]() |
AW: Strings in Stringgrid Spalten mit Währung Formatieren
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
|
AW: Strings in Stringgrid Spalten mit Währung Formatieren
Liste der Anhänge anzeigen (Anzahl: 1)
So, ich habe mal eine kleine Demo gebaut. Sie ist zwar längst nicht perfekt, sollte aber das Prinzip zumindest andeuten.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:05 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