Nochmals: Schau dir das genannte Demo-Programm an. Hier sind alle übersetzten Formulare von einem gemeinsamen Vorfahren abgeleitet, "TLocalizedForm", mit der die Sprachumschaltung vereinfacht wird. Die entsprechende Unit ist eigenständig, du kannst sie dir ins Projektverzeichnis kopieren. Um deine Formulare davon abzuleiten, schreibst du in der Deklaration nicht "class(TForm)", sondern "class(TLocalizedForm)"; zusätzlich musst du noch die lfm-Datei öffnen und das erste Wort "object" gegen "inherited" austauschen. (Oder verwende sinngemäß die Komponente, die jemand im englischen Forum veröffentlicht hat: http://forum.lazarus.freepascal.org/ind ... 56262.html).
Was soll das ganze? TLocalizedForm hat eine Methode "UpdateTranslation", die du aufrufst, um die Sprache umzuschalten. In deinem Formular überschreibst du diese Methode und liest vor "inherited" die Werte der Edit-Felder in Float-Variablen. Dann kommt "inherited", was die Sprachumschaltung inkl. Anpassung Formatsettings bewirkt. Anschließend schreibst du die Variablen als Strings wieder in die Edits, also etwa so:
Code: Alles auswählen
uses
..., LocalizedForms, ...
type
TForm1 = class(TLocalizedForm)
Edit1: TEdit; // Enthält Float-Zahl
...
protected
procedure UpdateTranslation(ALang: String); override;
...
end;
procedure TForm1.UpdateTranslation(ALang: String);
var
x: Double;
begin
x := StrToFloat(Edit1.Text);
inherited; // Hier werden u.a. die DefaultFormatSetting geändert.
Edit1.Text := FloatToStr(x);
end;