Mittwoch, 10. Juli 2013

AvERP Designer FF 2

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






Keine Kommentare:

Kommentar veröffentlichen