Bin neu hier und möchte erstmal ein kräftiges HALLO in die Runde schmeißen. Bin ein absoluter Lazarus Neuling und bitte daher um Milde, wenn meine Fragen naiv klingen.
Als Erstes wollte ich eine klitzekleine Datenbankanwenung basteln. Ich habe dazu 3 Tabellen in MySQL kreiert und sie auch ein bisschen mit Daten gefüllt. Es gelang mir auch mit ZeosAccess die Datenbank zu öffnen und anuzeigen. Nun kommen die ersten Probleme: In meiner Anwendung wird ein Datumsfeld aus einer Datenbanktabelle im amerikanischen Format angezeigt. Wahrscheinlich weil ich meine Locales so gestellt habe.
Ausgabe bei locale:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
Nun möchte das Datum trotzdem deutsch haben. Was tun?
Achja, falls nötig:
Ich arbeite mit einem Debian wheezy:
Linux version 3.2.0-4-686-pae (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.35-2
Lazarus Version 0.9.30.4-1.1
Datumsformat kommt Amerikanisch
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
-
- Beiträge: 65
- Registriert: Mi 27. Feb 2013, 18:24
- OS, Lazarus, FPC: Linux (L 0.9.30.4-1.1 FPC 2.6.0)
- CPU-Target: 32Bit
Re: Datumsformat kommt Amerikanisch
Jetzt antworte ich mir selbst. Also wenn ich das Formular (besser das ganze Programm) übersetze, bekomme ich plötzlich doch ein Datum in der richtigen Reiehenfolge, allerdings mit einem "-" getrennt: 25-2-13. Ich würde gerne da eingreifen und ein "richtiges Datum" ausgeben.
Dann habe ich den DBCalendar eingebunden und mit der Datenbank verbunden. Wenn ich nun in einem Datensatz auf das Datum gehe, zeigt der DBCalendar das DAtum an. Ist ja lustug, aber ich möchte das umgekehrt. Also, wenn ich auf ein Datum im Kalender gehe, dann soll das in das Datumsfeld. Also insgesamt die Frage, wie ich die einzelnen Felder in einem Grid anspreche.
Dann habe ich den DBCalendar eingebunden und mit der Datenbank verbunden. Wenn ich nun in einem Datensatz auf das Datum gehe, zeigt der DBCalendar das DAtum an. Ist ja lustug, aber ich möchte das umgekehrt. Also, wenn ich auf ein Datum im Kalender gehe, dann soll das in das Datumsfeld. Also insgesamt die Frage, wie ich die einzelnen Felder in einem Grid anspreche.
-
- Beiträge: 93
- Registriert: Di 17. Apr 2012, 22:41
Re: Datumsformat kommt Amerikanisch
Zeos greift immer auf die aktuallen FormatSettings.Date..Format zu. Stelle diese um, wie gewünscht, und es sollte funzen.
ZeosDevTeam
Re: Datumsformat kommt Amerikanisch
Mit dem Problem (die Anwendung zeigt ein US-Währungsformat an, während die BDE-Vorschau die korrekten lokalen Einstellungen widerspiegelt) habe ich mich heute auch länger herumgeschlagen.
Die Lösung, die ich eher zufällig fand, war dann, in den uses-Abschnitt der Unit (welche das Anwendungsfenster repräsentiert), noch die Unit "clocale" aufzunehmen.
uses
Classes, SysUtils, db, mysql50conn, FileUtil, Forms, Controls, Graphics,
Dialogs, DBGrids, DbCtrls, ComCtrls, StdCtrls, Menus, ExtCtrls, PrintersDlgs,
ZConnection, ZDataset, types ,
clocale; // ohne clocale unter Linux keine länderspezifischen globalen Variablen, sondern nur US-Defaults!
Als absoluter Lazarus-Neuling (und auch ohne Delphi-Vergangenheit) ist es mir nicht möglich, zu beurteilen, ob das die beste aller Möglichkeiten ist. Besser als mit lokalen Variablen an vielen Stellen die entsprechenden "zuständigen" globalen Variablen zu überschreiben, was mancherorts vorgeschlagen wurde, dürfte es immerhin sein...
Nachtrag: Gilt auch für das Währungsformat an Currency-Werten in DBEdit-Feldern und DBGrids. Während bei diesen im Entwurfsmodus korrekt Euro erscheinen, zeigt das Binary die Beträge mit Dollarsymbol an, solange man clocale nicht einbindet. [Stand: Linux 64bit, Lazarus 1.2.4, ZEOS 7.1.3.a]
Die Lösung, die ich eher zufällig fand, war dann, in den uses-Abschnitt der Unit (welche das Anwendungsfenster repräsentiert), noch die Unit "clocale" aufzunehmen.
uses
Classes, SysUtils, db, mysql50conn, FileUtil, Forms, Controls, Graphics,
Dialogs, DBGrids, DbCtrls, ComCtrls, StdCtrls, Menus, ExtCtrls, PrintersDlgs,
ZConnection, ZDataset, types ,
clocale; // ohne clocale unter Linux keine länderspezifischen globalen Variablen, sondern nur US-Defaults!
Als absoluter Lazarus-Neuling (und auch ohne Delphi-Vergangenheit) ist es mir nicht möglich, zu beurteilen, ob das die beste aller Möglichkeiten ist. Besser als mit lokalen Variablen an vielen Stellen die entsprechenden "zuständigen" globalen Variablen zu überschreiben, was mancherorts vorgeschlagen wurde, dürfte es immerhin sein...
Nachtrag: Gilt auch für das Währungsformat an Currency-Werten in DBEdit-Feldern und DBGrids. Während bei diesen im Entwurfsmodus korrekt Euro erscheinen, zeigt das Binary die Beträge mit Dollarsymbol an, solange man clocale nicht einbindet. [Stand: Linux 64bit, Lazarus 1.2.4, ZEOS 7.1.3.a]
Zuletzt geändert von sierdolg am Do 4. Sep 2014, 12:15, insgesamt 1-mal geändert.
-
- Beiträge: 93
- Registriert: Di 17. Apr 2012, 22:41
Re: Datumsformat kommt Amerikanisch
Habe ein Patch implementiert, welches das Datumsformat automatisch erkennt.
Wird mit 7.0.4 und 7.1.1-Beta erscheinen. Ist jedoch bereits im SVN verfügbar.
Grüße Michael
Wird mit 7.0.4 und 7.1.1-Beta erscheinen. Ist jedoch bereits im SVN verfügbar.
Grüße Michael
ZeosDevTeam