Format Settings - Decimal- and Thousand-Separator
Hi,
the Report Builder use normally the system settings for the Decimal- and
Thousand-Separator, but I need to set this Separator without changing the
system settings.
The PC were the Applications runs, has the settings e.g. 1,000.00 but I need
the settings 1.000,00.
The best would be, if I could set the Separator's for each thread separat.
I didn't have found a way till now.
Any help is greatly appreciated.
Best Regards,
Jan Ludwig
the Report Builder use normally the system settings for the Decimal- and
Thousand-Separator, but I need to set this Separator without changing the
system settings.
The PC were the Applications runs, has the settings e.g. 1,000.00 but I need
the settings 1.000,00.
The best would be, if I could set the Separator's for each thread separat.
I didn't have found a way till now.
Any help is greatly appreciated.
Best Regards,
Jan Ludwig
This discussion has been closed.
Comments
The Windows system settings are stored as global variable in Delphi. One
solution is to temporary override the global variables and then restore them
back. Use a try..finally block. Another solution is to implement your own
custom formatting class. See the following article.
---------------------------------------------
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
Best regards,
Nard Moseley
Digital Metaphors
www.digital-metaphors.com
Best Regards,
Jan Ludwig