Ausgewählte Artikel zur Programmierung mit Delphi

Werner Voigt

 für 


D-Mark und Euro

Autor: Dipl.-Math. Werner Voigt

Korrekte Darstellung von Währungen und Maßeinheiten unabhängig von Systemeinstellungen und parallele Darstellung unterschiedlicher Währungen

veröffentlicht in Toolbox 6/2001 Seite 73
Copyright 2002 © Werner Voigt und Toolbox
Bitte beachten Sie auch die Hinweise zur kommerziellen Nutzung

Problem:

Die korrekte Währungsdarstellung ist auf den ersten Blick Ländersache.
In der Systemsteuerung wird bei der Ländereinstellung als nationale Besonderheit auch die entsprechende Währungsdarstellung festgelegt. Diese Einstellung gilt dann natürlich für alle Programme, die auf dem jeweiligen PC laufen.
Wenn man, wie bei der Umstellung auf den Euro nun eine gewisse Zeit mehrere Währungsangaben parallel benötigt, hilft dieses Wissen nicht weiter. Auch die Darstellung verschiedener Maßeinheiten muß sich anders regeln lassen.

Um nicht alle Währungsangaben über einen Kamm zu scheren, bleibt uns nur, in die Anzeige der Währung einzugreifen. Das ist eine Frage der Formatierung. Deshalb lohnt sich (wie fast immer) ein Blick in die Delphi-Hilfe. Unter dem Hilfeindex Format findet sich eine ganze Reihe Einträge. Unser Aufhänger heißt FormatCurr.
Die Hilfe erklärt uns dazu:

    function FormatCurr(const Format: string; Value: Currency): string;
FormatCurr formatiert das in Value angegebene Currency-Objekt. Die Formatierung wird durch den in Format übergebenen Format-String gesteuert. Informationen zu den unterstützten Formaten finden Sie in der Beschreibung der Funktion FormatFloat.

Und dort finden wir eine ordentliche Beschreibung nebst Beispiel. In einem kleinen Programm nutzen wir die gewonnene Erkenntnis. Eine Zahl wird wahlweise entsprechend der Systemeinstellung, als DM-Betrag oder als Euro-Betrag dargestellt. Zur Auswahl dienen die entsprechenden Radiobuttons. In dem Editfeld steht der Betrag als ganze Zahl. Entscheidend ist der jeweilige Aufruf von FormatCurr:

    FormatCurr('#,##0.00 '+Valuta, Money);
  

Money ist eine Variable vom Typ Currency, deren Wert formatiert werden soll. Das Währungssymbol im String Valuta ist ein Anhängsel, das wir beliebig austauschen können.
Um Currency-Felder darzustellen, benötigen wir eine kleine Datenbank. Die beiliegende Paradox-DB geld.db mit nur einem Feld Betrag reicht völlig aus.
Wir fügen eine Table und eine Datasource, sowie ein DBGrid in unser Formular ein. Unser Ziel ist es, in dem DBGrid den Inhalt des DB-Feldes Betrag in DM und auch umgerechnet in Euro zu zeigen.
Dazu wird mit der rechten Maustaste auf die Komponente Table1 geklickt und der Feldeditor gestartet. Dort (wiederum die rechte Maustaste) fügen wir zwei Felder hinzu. Dies sind die Felder Betrag (aus der DB) und Euro als neues Feld. Im Dialogfenster "Neues Feld" wählen wir Name = Euro, Typ = Currency und Feldtyp = berechnet. Bei beiden Feldern tragen wir im Objektinspektor bei Displayformat einfach die einsprechenden Formatstrings einschließlich DM bzw. Eurosymbol ein. Es ist darauf zu achten, daß der für das DBGrid gewählte Font auch Euro-tauglich sein muß!
Nun erzeugen wir für Table1 noch eine Ereignisbehandlungsroutine für OnCalcFields, die lediglich die Anweisung zur Berechnung des Euro-Wertes:

    Table1Euro.Value := Table1Betrag.Value/1.95583;
  

enthält.
Damit haben Sie zwei verschiedene Währungsdarstellungen in einem DBGrid. Die Anpassung an andere Komponenten zur Darstellung von Currency-Feldern dürfte nun kein Problem mehr sein.

zurückzurück
Copyright © 2003 by  EDVoigt  (Werner Voigt).