Schon einige Zeit bin ich diesem Blog den Abschluß des letzten Beitrags "Designer für Fortgeschritte" schuldig:
Die Aufgabe einen FR4-Report Sprach-sensible zu machen ist nur bis in die Report-Start-Maske abgebildet.
Übergabe an Report
BTNOKOnClick
BTNOKOnClick(Klick
auf OK, Objectinspector aufrufen,OnClick checken)
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
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.
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
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
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
Ordner
Drucksteuerung zufügen
ABC; Variabe SprachVorgabeID
zufügen
Beim nächsten Öffnendes Report-Designers
stehen
die Variablen der Drucksteuerung
im Reiter Variablen dem
Report zur Verfügung
 |
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