Currency symbols in report designer
I'm in the UK and a user, also UK-based, wants to print a dollar sign on a
value. He's trying to produce a price-list showing prices in Sterling,
Dollars and Euros. Using the display format property page of a DBText field,
the mask can be specified with a pound sign or a euro sign and works fine.
However, the '$' sign seems to be used to put the Windows local currency
symbol in. As his computers are all configured with the pound sign as the
currency symbol, how can he get a $ symbol where required?
--
Charles Bainbridge
value. He's trying to produce a price-list showing prices in Sterling,
Dollars and Euros. Using the display format property page of a DBText field,
the mask can be specified with a pound sign or a euro sign and works fine.
However, the '$' sign seems to be used to put the Windows local currency
symbol in. As his computers are all configured with the pound sign as the
currency symbol, how can he get a $ symbol where required?
--
Charles Bainbridge
This discussion has been closed.
Comments
---------------------------------------------
Article: Currency Formatting in ReportBuilder
---------------------------------------------
Currently when formatting currency display formats, ReportBuilder internally
calls FloatToStrF with a ffCurrency paramter.
This honors the Windows currency settings.
There are two ways to override this behavior:
1. Create a descendant of TppDisplayFormat.
See ppDisplayFormat.pas. YOu can easily create a descendant of
TppDisplayFormat and specify that your TmyDisplayFormat be used by
ReportBuilder to perform formatting. See the initialization section
ppDisplayFormat.pas.
2. Override the Window currency values
You can override this by setting Delphi's global variables for
DecimalSeparator and CurrencyString. You will probably want to restore these
values after printing the report.
Below is a simple example:
var
lcSaveDecimalSeparator: Char;
lsCurrencyString: String;
begin
lcSaveDecimalSeparator := DecimalSeparator;
lsCurrencyString := CurrencyString;
DecimalSeparator := '.';
CurrencyString := '$';
try
Report.Print;
finally
DecimalSeparator := lcSaveDecimalSeparator;
CurrencyString := lsCurrencyString;
end;
end;
For the end-user solution you may to code an event-handler
for the Report.Template.OnLoadEnd event to setup the proper settings.
--
Tech Support mailto:support@digital-metaphors.com
Digital Metaphors http://www.digital-metaphors.com
--
Nard Moseley
Digital Metaphors Corporation
http://www.digital-metaphors.com
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com