Die Aufgabe einen FR4-Report Sprach-sensible zu machen ist nur bis in die Report-Start-Maske abgebildet.
Übergabe an Report
BTNOKOnClick
BTNOKOnClick
BTNOKOnClick(Klick
auf OK, Objectinspector aufrufen,OnClick checken)
Begin
Begin
//
Report-Rückgabe-Variablen besetzen
sReturnVar1 := '';
sReturnVar2 := '';
sSprachID := '2';
sSprachID := EDIT_1.text;
//
sReportvariablen belegen
sReportVariablen :=
'"SprachVorgabeID=' + sSprachID + '",' +
'"ReturnVar1='+sReturnVar1+'",'+
'"ReturnVar2='+sReturnVar2+'"';
//MessageBox(sReportVariablen,'VAR');
End;
Übergabe in sReportVariablen
dort in „“ eingeschlossen „Variable=<Wert>“,sSprachID := '2';
Trick um sSprachID zum String zu machen
sReturnVar1
sReturnVar2
sind immer dabei
dort in „“ eingeschlossen „Variable=<Wert>“,sSprachID := '2';
Trick um sSprachID zum String zu machen
sReturnVar1
sReturnVar2
sind immer dabei
Und jetzt weiter im AvERP-Designer:
Zunächst mein Beispiel von dem ich abgekupfert habe:
Design Report nach Rechtsklick auf Maske öffnen
Es öffnet sich der FR4-Deisgner:
Im FR4-Designer sehr schön alle Script-Daten in der Code-Seite
zusammengefaßt, darin kann sogar über <STRG-F>
gesucht werden.
Variablen können Report-global deklariert werden.
Variablen können Report-global deklariert werden.
var Seite: Integer;
var StrTemp: String;
var SeitenGruppe:
TfrxArray;
var
Kopie, KopfEnde, Debug: Boolean;
Einfach aus Standard-Code-Seite kopiert, wer weiß, wo es gebraucht wird. Auf Report-Variable wird in <> geklammert zugegriffen, TR-Funktion sorgt für die Übersetzung der Label d.h für LB_TYPE wird die deutsche Übersetzung Type eingetragen. Mit AvERP/ Admin/System Übersetzung in Formularen kann die Übersetzung vorgenommen werden,
// Einzeiliger Kommentar
{ }
geschweifte Klammern für mehrzeiligen Kommentar
|
procedure
bdMDOnBefore Print
im FR4-Designer als Code zu erzeugen als Ereignis OnBeforePrint
auf dem Objekt MD – dem Hauptband
bdMDOnBefore Print
im FR4-Designer als Code zu erzeugen als Ereignis OnBeforePrint
auf dem Objekt MD – dem Hauptband
var sp, Seite: Integer;
var StrTemp: String;
var SeitenGruppe: TfrxArray;
var Kopie, KopfEnde, Debug:
Boolean;
var ser14: String;
var ser58: String;
var vTrag: String;
var vHub: String;
var vDruck: String;
var vSchutz: String;
var vlang: String;
var vbreit: String;
var vHoch: String;
var iBJ: Integer;
procedure
bdMDOnBeforePrint(Sender: TfrxComponent);
begin
if (Debug) then
ShowMessage('bdMDOnBeforePrint 1');
// Übersetzungen
if <SprachVorgabeID>
> 0 then
sp := <SprachVorgabeID>
else
sp :=
<frx_rep04."BSPRA_ID_DRUSPRA">;
if (sp <=0) then sp :=
2;
LB_TYPE.text
:= TR(sp,'LB_TYPE','Type');
LB_Seriennr.text
:= TR(sp,'LB_Seriennr','Serien-Nr.');
LB_TRAGKRAFT.text
:= TR(sp,'LB_TRAGKRAFT','Tragkraft');
LB_HUBHOEHE.text
:= TR(sp,'LB_HUBHOEHE','Hubhöhe');
LB_DRUCK.text
:= TR(sp,'LB_DRUCK','Druck');
LB_Schutzart.text
:= TR(sp,'LB_Schutzart','Schutzart');
LB_PLATTLANG.text
:= TR(sp,'LB_PLATTLANG','Plattformlänge');
LB_PLATTBREIT.text
:= TR(sp,'LB_PLATTBREIT','Plattformbreite');
LB_BAUHOEHE.text
:= TR(sp,'LB_BAUHOEHE','Bauhöhe');
LB_Baujahr.text
:= TR(sp,'LB_Baujahr','Baujahr');
LB_TypAuftrag.text
:= TR(sp,'LB_TypAuftrag','Auftrag');
end;
Label Memo1 bis Memo6 sinnvoll benennen
Alle neu zu übersetzenden Memo-Felder habe ich bewußt mit Präfix LBBET benannt, um sie in der Fülle der verwendeten Label schnell wieder zu finden und auch um sicher zu stellen, daß der Ersteintrag über die TR-Funktion tatsächlich erfolgt und keine Kollision mit bestehenden Labeln zu befürchten ist.
Unter Eigenschaften den Namen ändern
Alle neu zu übersetzenden Memo-Felder habe ich bewußt mit Präfix LBBET benannt, um sie in der Fülle der verwendeten Label schnell wieder zu finden und auch um sicher zu stellen, daß der Ersteintrag über die TR-Funktion tatsächlich erfolgt und keine Kollision mit bestehenden Labeln zu befürchten ist.
Unter Eigenschaften den Namen ändern
Code
Hier werden ausnahmsweise die Start-Texte für alle unterstützten
Sprachen in Englisch eingetragen und müssen um Deutsch Drucken zu
können, zurück verdeutscht werden.
var
sp, Seite: Integer;
var
StrTemp: String;
var
SeitenGruppe: TfrxArray;
var
Kopie, KopfEnde, Debug: Boolean;
procedure
MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
if
(Debug) then ShowMessage('MasterData1OnBeforePrint');
//
Übersetzungen
if
<SprachVorgabeID> > 0 then
sp
:= <SprachVorgabeID>
else
sp
:= <frx_rep04."BSPRA_ID_DRUSPRA">;
if
(sp <=0) then sp := 2;
LBBet_Auftrag.text
:= TR(sp,'LBBet_Auftrag','Order:');
LBBet_Ihrebestnr.text
:= TR(sp,'LBBet_Ihrebestnr','Your order no.:');
LBBet_Bez.text
:= TR(sp,'LBBet_Bez','Description:');
LBBet_Artnr.text
:= TR(sp,'LBBet_Artnr','Material-no:');
LBBet_IhreArtNr
:= TR(sp,'LBBet_IhreArtNr','Your mat.-no.:');
LBBet_Menge
:= TR(sp,'LBBet_Menge','Amount:');
end;
begin
end.
|
Report Variablen ergänzen
Initial alles in Englisch wie an die TR-Funktion übergeben
Mit funktionierndem Code in
procedure
MasterData1OnBeforePrint(
erfolgt, egal welche Sprache im Vorschalt-Dialog gewählt wird, die Ausgabe in Englisch, da die Übersetzung unter "//AvERP/ Admin/System/Übersetzung in Formularen" noch nicht vorgenommen ist.
Die Rückübersetzung ins Deutsche soll jetzt nachgeholt werden.
Also "//AvERP/ Admin/System/Übersetzung in Formularen" aufgerufen und nach Systemsprache LBBET% Neueintrag='X' gesucht. Alle neu zu übersetzenden Memo-Felder habe ich bewußt mit Präfix LBBET benannt, um sie in der Fülle der verwendeten Label schnell wieder zu finden und auch um sicher zu stellen, daß der Ersteintrag über die TR-Funktion tatsächlich erfolgt und keine Kollision mit bestehenden Labeln zu befürchten ist, denn die TR-Funktion sorgt nur für einen Eintrag in das AvERP-Übersetzungssystem, wenn noch nicht angelegt.
Zunächst Deutsch = Englisch
Keine Kommentare:
Kommentar veröffentlichen