AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Fastreport, mehrsprachige Reports
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport, mehrsprachige Reports

Ein Thema von EarlyBird · begonnen am 14. Feb 2013 · letzter Beitrag vom 16. Feb 2013
 
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#15

AW: Fastreport, mehrsprachige Reports

  Alt 15. Feb 2013, 19:19
Wir haben das wie folgt gelöst (es wird Localizer eingesetzt, aber die Funktion GetTranslatedProperty sowie die Native-Abfrage kann ja leicht angepasst werden). Die Funktion wird dann vor dem ShowReport oder PrepareReport aufgerufen.

Delphi-Quellcode:
procedure PrepareFrx(Report : TFrxReport);
   //------------------------------------------------------------------------
   // Abfrage der Strings aus Localizer
   //------------------------------------------------------------------------
    function GetTranslatedProperty(const FormName, PropertyName : string): string;
    begin
       Result := LocOnFly.LocalizerOnFly.GetTranslatedProperty(Formname, PropertyName);
    end;
var
   i : integer;
   ResString : widestring;
   FormName, CompName : string;
   Native : boolean;
begin
   // Feststellen, ob übersetzt werden müss
   Native := (LocalizerOnFly.NativeLocale = LocalizerOnFly.CurrentLocale);

   // Name der Elternkomponente, sollte immer das Formular sein ...
   if Report.Owner <> nil then
      Formname := Report.Owner.Name;

   // Alle Reportkomponenten durchlaufen
   for i := 0 to Report.ComponentCount-1 do
   begin
      // wenn es ein Textfeld ist
      if TFrxComponent(Report.Components[i]) is TFrxMemoView then
      begin
         // Die Spezialfälle eintragen, die müssen dann so heißen
         CompName := Lowercase(TFrxComponent(Report.Components[i]).Name);
         if CompName = 'qrluserthen
            TFrxMemoView(Report.Components[i]).Memo.Text := UserName
         else
         if CompName = 'qrlprogramnamethen
            TFrxMemoView(Report.Components[i]).Memo.Text := ProgramName+' '+CopyRight
         else
         if CompName = 'qrlversionthen
            TFrxMemoView(Report.Components[i]).Memo.Text := ProgramVersion
         else
         if not Native then
         begin
            // Wenn Übersetzung notwendig, dann den übersetzten String holen
            // ResString := LocOnFly.LocalizerOnFly.GetTranslatedProperty(Formname,TFrxComponent(Report.Components[i]).Name+'.Memo.UTF8');
            ResString := GetTranslatedProperty(Formname,TFrxComponent(Report.Components[i]).Name+'.Memo.UTF8');

            // und eintragen
            if ResString <> 'then
               TFrxMemoView(Report.Components[i]).Memo.Text := ResString;
            // wichtig, da UTF8 keine CHARSETS verträgt! Localizer trägt aber
            // beim Einlesen der Übersetzung das Charset der Zielsprach-Lokale ein.
            // Also DEFAULT_CHARSET setzen
            TFrxMemoView(Report.Components[i]).Font.Charset := 1;
         end;
      end;
   end;
   if frmData.tblSetup.FieldByName('WaterMark').AsString <> 'then
      CreateReportWaterMark(Report, frmData.tblSetup.FieldByName('WaterMark').AsString);
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:44 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