Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid Zellen wie Excel Kommastellen unterdrücken (https://www.delphipraxis.net/114039-stringgrid-zellen-wie-excel-kommastellen-unterdruecken.html)

Stecky2000 18. Mai 2008 21:03


StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Hallo allerseits,


habe wieder mal ein Problem, finde aber keine Lösung, ggf. gibt es keine?

Ich habe ein StringGrid in das ich berechnete werte schreibe. Es handelt sich dabei um Arbeitszeiten, dezimal. Ein beispiel:

ich berechne die Differenz von 04:30 zu 13:20 und bekomme dezimal 8.33333333 Stunden raus.
In Excel auch. Nun schreibe ich das in ein StringGrid, damit ich aber im StringGrid nur 8.33 angezeigt bekommen, also nur 2 Nachkommastellen schreibe ich es mit folgendem Code rein:

Delphi-Quellcode:
StringGrid2.Cells[7, i] := format('%2.2f',[xsum]);
Das Problem ist nun, wenn ich nachfolgend Berechnungen mit den StringGrideinträgen durchführe, bekomme ich falsche Ergebnisse:

Beispiel: 8.33 + 8.33 + 8.33 + 8.83 etc.
ergibt ein kleineres Ergebnis als
8.3333333 + 8.3333333 + 8.3333333 + 8.8333333 etc.

So, in Excel wird in der zelle 8,33 angezeigt, wenn ich die Anzeige ändere sehe ich jedoch das tatsächlich 8,33333333 drin steht.

Im StringGrid scheint tatsächlich nur 8.33 drin zu stehen und die restlichen Nachkommastellen werden nicht nur nicht angezeigt, sie sind tatsächlich nicht da.

Gibt es da eine Lösung?

Chemiker 18. Mai 2008 21:24

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Hallo Stecky2000,

zum Unterschied zu Excel formatiertst Du im StringGrid nicht die Werte auf 2 Stellen sondern schreibst tatsächlich nur 2 Nachkomastellen rein. Das gleiche Ergebnis bekommt man in Excel auch wenn man 8.33 reinschreibt. Entweder schreibt man die original Werte ins StringGrid und formatiert die Werte jeder Zelle auf 2 Nachkommastellen, oder man führt die Berechnungen direkt mit den Zahlenwerte durch und zeigt sie im StringGrid nur an.

Bis bald Chemiker

mkinzler 18. Mai 2008 21:25

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Um das Verhalten von Excel nachzubilden, musst du die eigentlichen Werte getrennt speichern.

Stecky2000 18. Mai 2008 21:31

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Ich hoffe ich verstehe Dich richtig.

1. Ich kann die Berechnungen nicht mit anderen Werten durchführen.
Das StringGrid hat 9 Spalten und 25 Zeilen. Die erste Spalte trägt die laufenden Nr., die erste Zeile die Bezeichnung Mo, Di, Mi bis So und eine Summenspalte. In jeder Zeile werden die Werte der Tage addiert und in die Summenspalte geschrieben. Die Werte aller Zeilen in der Summenspalte werden wiederum addiert und der Wert dann zu weiteren Berechnung verwendet.

2. Du schreibst "die Werte original ins StringGrid schreiben und auf 2 Nachkommastellen formatieren". Genau das will ich, aber wie?

mkinzler 18. Mai 2008 21:34

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Steht doch oben

Stecky2000 18. Mai 2008 21:35

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Wo oben? Meinst Du deine Aussage mit dem getrennt speichern?
Das würe ich so verstehen, dass ich ein weiteres StringGrid einfüge und die Eigenschaft Visible auf False setze und das zum Rechnen nehme.

mkinzler 18. Mai 2008 21:36

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Nein das Format()

Stecky2000 18. Mai 2008 21:39

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Sorry, ich bin ja kein Programmierer.

Ich blicke nicht durch.

Ich habe das Format zum in die Zellen schreiben benutzt, das kürzt doch aber die Stellen?!

mkinzler 18. Mai 2008 21:40

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Ja deshalb der der Vorschlag mit dem getrennt speichern oder halt Ownerdraw

Stecky2000 18. Mai 2008 21:46

Re: StringGrid Zellen wie Excel Kommastellen unterdrücken
 
Danke, dann werde ich tatsächlich ein zweites unsichtbares Grid verwenden.
Ich hoffe es wird der Performance kein Abbruch tun ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:32 Uhr.
Seite 1 von 2  1 2      

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