![]() |
FastReport Datum formatieren
Hi,
ich hätte gerne ein DateTime Feld in FastReport wie folgt dagestellt: Mon 01.01.2008 Tue 02.01.2008 Wed 03.01.2008 Mit der Formatierung "ddd dd.mm.yyyy" im Report war ich schon einigermaßen erfolgreich. Allerdings sind die Wochentagsabkürzungen auf Deutsch. Die hätte ich gerne auf englisch. Hat jemand eine Idee? Gruß Marcus |
Re: FastReport Datum formatieren
Delphi-Quellcode:
Vorher solltest Du den Inhalt des Arrays sichern und nach dem Ausdruck des Reports wiederherstellen, denn die Einstellungen gelten systemweit.
ShortDayNames[1] := 'Sun';
ShortDayNames[2] := 'Mon'; ShortDayNames[3] := 'Tue'; ShortDayNames[4] := 'Wed'; ShortDayNames[5] := 'Thu'; ShortDayNames[6] := 'Fri'; ShortDayNames[7] := 'Sat'; |
Re: FastReport Datum formatieren
Hallo Marcus,
wie wäre es hiermit:
Delphi-Quellcode:
Grüße vom marabu
var
fs: TFormatSettings; begin GetLocaleFormatSettings($0409, fs); ShowMessage(FormatDateTime('ddd dd.mm.yyyy', now, fs)); end; |
Re: FastReport Datum formatieren
Das ist natürlich sehr schön und auch Thread-Safe, aber er will es ja im Reportgenerator verwenden. Eine weitere Möglichkeit bestünde in der Definition einer UDF für Datumswerte in Fastreport, dann kann man die Funktion im Delphi Programm lassen und sauber mit TFormatSettings arbeiten.
|
Re: FastReport Datum formatieren
Hallo Union,
wenn DateTime-Feld sich auf ein TDateTimeField bezieht, so würde ich einfach ein calculated field deklarieren und diesem den bereits formatierten String zuweisen. FastReport ist dann aller Pflichten enthoben. Freundliche Grüße |
Re: FastReport Datum formatieren
Ihr seit die besten! Das funktioniert super :) Habe mir schon gedacht, das das mit den Ländereinstellung etc. zu tun hat, aber auf so ein Array wäre ich wohl nicht gekommen.
Im FastReport geht nur Unions Methode, da das PascalScript die FormatSettings nicht kennt. Anonsten funktioniert marabus Mehode unter Delphi auch gut. |
Re: FastReport Datum formatieren
Und hier die Mischung aus beidem:
Delphi-Quellcode:
Im Fastreport trägst Du dann folgendes in das Memo ein, um die Funktion aufzurufen (Achtung, Datumsformatierung löschen, da String zurückgegeben wird!):
procedure TForm1.FormCreate(Sender: TObject);
begin // Fastreport die Funktion mitteilen frxReport1.AddFunction('function MyDateTimeToStr(ADateTime : TDateTime) : string'); end; function TForm1.frxReport1UserFunction(const MethodName: String; var Params: Variant): Variant; var fs : TFormatSettings; begin if Methodname = 'MYDATETIMETOSTR' then begin GetLocaleFormatSettings($0409, fs); result := FormatDateTime('ddd dd.mm.yyyy', Params[0], fs); end; end; Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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