Sonntag, 22. Dezember 2013

Aktualisierung Release Candidaten 6.1.0.44 am 09.05.2014 ( - 4.2.5.126)

Aktualisierung: AvERP DELPHIXE ReleaseCandidat:

Version 6.1.0.44
Datum 09.05.2014

Version: >= 6.1.0.29
Datum: 14. Januar 2014


 
Zur AvERP DELPHIXE Version gibt es seit 06.12.2013 einen weitere veröffentliche Version als  ReleaseCandidat:

Download auch über http://schmidt-schwarz.de/averp/
  • Die neuste Beta-Version zum DelphiXE-Client-Programm 6.1.0.35 Stand 04.03.2014
  • Wenn auch diese Version nicht stabil genug läuft.
  • Nehmen Sie die letzte Version AvERP.exe 4.2.5.126
Der unter beschriebene Fehler tritt ab Version 6.1.0.39 nicht mehr auf!!
Habe die Version 6.1.0.25 getestet - beim Versuch eine komplexe Excel-Tabelle über die "Universelle Schnittstelle" von AvERP einzulesen, weigerte sich nach Excel mit der Meldung
"Microsoft Excel kann diesen Vorgang mit den verfügbaren Ressourcen nicht ausführen. Bitte wählen Sie weniger Daten aus oder schliessen Sie andere Programme."

Mit der aktuellen 4.2.5er Version arbeitete Excel klaglos zusammen - sollte die AvERP DelphXE-Version wesentlich Resourcen-hungriger sein??
 

 
Was mir noch zur "älteren" AvERP-Version 4.2.5 aufgefallen ist:
Offensichtlich wird von SYNERPY auch diese Version noch weiter gepflegt. Bisher hatte ich eine 4.2.5.106 als höchsten Versionsstand zur Verfügung - mittlerweile sind sind 20 Änderungen zum Stand 4.2.5.126 hinzugekommen.

Donnerstag, 19. Dezember 2013

Lagerverwaltung in AvERP

Lagerverwaltung in AvERP

Eine umfassende Lagerverwaltung, jederzeit ein bekannter Lagerbestand, ist ein Kernpunkt in Warenwirtschaft und ERP. 
AvERP führt Bestände auf Lagerplatzebene. Die Summe der Lagerplatzbestände innerhalb eines Lagers bildet den Lagerbestand. Im Mandantenstamm werden die Standard Lager eingestellt.

Zitat AvERpedia: „Die in den Feldern Standardeingangslager und Standardausgangslager hinterlegten Lager werden beim Anlegen eines Artikels automatisch als Artikeleinzellager angelegt, wobei das Eingangslager in allen Prozessen für geplante Eingänge, und das Ausgangslager für alle geplanten Lagerausgänge automatisch vorbelegt wird. Das Just in Time Lager wird für die Lagerhierarchie bei den Kostenstellen benötigt. Artikel, die in den Artikelmerkmalen als Dienstleistungsartikel gekennzeichnet sind, werden automatisch einem Dienstleistungslager zugeordnet, das in der Mandantenverwaltung hinterlegt ist. Obwohl für die Artikel keine Buchungen erfolgen, benötigt AvERP für die Prozessabwicklung ein Dummy Lager. Das Sperrlager und der Umschlagplatz werden für die Wareneingangskontrolle benötigt. Diese Lager werden bei den entsprechenden Artikeln automatisch angelegt, wenn ein Wareneingangsworkflow stattfindet. Die Wareneingangsmenge wird bei einer Wareneingangskontrolle zuerst auf den Umschlagplatz gebucht und von dort aus verteilt. Findet eine Reklamation statt bzw. ist die Wareneingangsprüfung in einem bestimmten Abschnitt nicht korrekt, wird die zu reklamierende Menge auf das Sperrlager gebucht. Ein Kundensperrlager wird für die Kundenreklamation, das Kommissionslager für das Kommissionswesen benötigt. „


Auf das Eingangslager wird im Einkauf bestellt und der Wareneingang gebucht.
Wenn Wareneingangskontrolle über den WE-Workflow erfolgt, wird zunächst auf das Umschlagplatz gebucht und nur die „gute“ Ware auf das Eingangslager umgebucht – Reklamationen werden auf das Lieferanten -Sperrlager umgebucht.
Vom Ausgangslager wird im Verkauf geliefert. Üblicherweise wird vom Ausgangslager abgebucht – Buchungen auf Konsignationslager beim Kunden führen zu Umbuchungen.
Auch Bestände von Beistellteilen werden über spezielle Lager abgebildet. Beistellteile an Lieferanten zur Abbildung von Fremdfertigung und Auswärtsarbeitsgängen können per Lieferschein auf das Lieferanten-Lager umgebucht werden – Entlastung erfolgt als Wareneingang.
Die Anforderung und Lieferung von Kunden – Beistellteile kann über Umbuchungen von und gegebenenfalls auch wieder zurück auf Kundenlager abgebildet werden.
Schließlich können zur Abbildung des innerbetrieblichen Materialflußes weitere Lager zwischen Eingangs- und Ausgangslager geschaltet werden. Über die Zuordnung eines Lagers zum Stammarbeitsplan wird festgelegt, von welchem Lager das Einsatzmaterial abgebucht wird und auf welches Lager die gefertigten Artikel zugebucht werden.

Standard – Lagerplätze

Bei Anlage Artikel wird auch das Artikelstamm – Einzellager für die Standard – Lager mit jeweils einem STANDARD Lagerplatz angelegt. Aufruf Einzellager als Unterprogramm zum Artikel
Um die Zuordnung von Lagerplätzen in AvERP muß man sich nicht kümmern, wenn es zur Abbildung des Prozesses nicht notwendig ist. Zu jedem Lager legt AvERP automatisch einen Standard-Lagerplatz an. Alle Bestände eines Artikels bezogen auf ein Lager können so auf dem Standard-Lagerplatz zusammen gefasst werden. Die exakte Position im Lager kann so nicht bestimmt werden.

Übersicht über Lager über F4-Taste (Kontext zur Artikelnummer) A. Lager
zeigt Bestand über alle Lager des Artikels.
 
Unter dem Artikel -Einzellager liegen die Einzellager-Lagerplätze.
Ohne Weiteres jeweils nur der STANDARD Lagerplatz. 
 

Einfachste Inventur

Die einfachste Form einer Inventur mit AvERP besteht aus dem Druck der Inventur-Aufnahmeliste aus Stammdaten/Artikel. Die Liste wird sortiert nach Lagerfach, Artikel-Nr.. Eine Zuordnung von Lagerfächern ist also hilfreich um mit der Inventurliste nach einen sinnvollen Weg zur Bestandsaufnahme durchs Lager zu gehen.

Druck Inventur Aufnahmeliste aus Artikelstamm.
Auswahl einer Teilmenge der Artikel z.B. nach WarenGruppe Einkauf = „HALB“ oder WrGrp. Sonst = 'HBL' oder auch Artikelnummer beginnt mit „HBL*“ um die Ergebnismenge einzuschränken.
Aus der Listen-Darstellung Drucken „Inventur – Aufnahmeliste“ aufrufen.
Auswahl kann auf ein „Bestimmtes Lager oder LEER für alle“ getroffen werden.


Inventurliste wird nach Lagerfach sortiert 
(leider für Artikel OHNE Lagerfach vor denen mit gesetztem Lagerfach)

so ist es sinnvoll Lagerfächer zu definieren!

1. Lagerfach für Einzellager zuordenen

(Einfachster Fall

1 fester (Standard) Lagerplatz als Lagerfach dem Einzel-Lager zuordnen)

 
Die Eingabe Lagerfach dient rein als Sortier-Kriterium, wird NICHT nach bestimmter Logik wie Nummernkreis oder Lager-Koordinate nach dem Schema Regal-Stellplatz-Ebene-Fach vorgegeben. Eingabe Lagerfach wird nicht validiert und liegt voll in der Verantwortung des Erfassers.

Im Lager-Kontext zum Artikel über die F4-Taste

wird das Lagerfach zum Lager angezeigt

 


2. Anlage eine Lagerplatzes

Aufwendiger als die Zuordnung eines Lagerfachs zu Lager und Artikel  ist die Anlage von Lagerplätzen unabhängig von den automatisch angelegten Standard-Lagerplätzen.

Hier  
Anlage eines Lagerplatzes BL03-06 zugehörig zum Hauptlager
Zusatzdaten wie Regal, Spalte, Reihe, Fach sowie Abmessungen sind in der betrachteten Datenbank-Version 2012.A02 ohne erkennbare Funktion.
Regal / Spalte / Reihe werden in aktueller Version zwar über 3-Punkte Tasten als Unterprogramm vorkonfiguriert, ist beim 1.Test aber ohne Funktion.(die intuitiv erkennbar wäre)

Zunächst Anlager eines Lagerplatzes im Lagerstamm - Lagerplätze.
 Dann Zuordnung des Lagerplatzes als Stammplatz zum Artikel.
Wareneingänge für diesen Artikel "HBL-00050000302" werden nun auf den Stammlagerplatz "BL03-06" gebucht.


Komplizierter wird es, wenn der Bestand für einen Artikel innerhalb eines Lagers auf unterschiedlichen Lagerplätzen geführt wird und Buchungen auf einen Nicht-Standard Lagerplatz durchgeführt werden sollen. Dann muß das Lagermodul "Lagerreservierungen" genutzt werden.

Lagerplatz-Reservierung

Übersteuerung des Standard-Lagerplatzes beim Ein- und auch beim Auslagern erfolgt über das Lagermodul, wie auch für die Reservierungen von Warenträgern, Chargen und Seriennummern nötig. Aufruf durch "Shift-Klick auf die 6-Punkte Taste zur Lagernr.
Anwahl des Lagerplatzes über Maus-Drag und Drop
Ziehen des Lagerplatzes von "verfügbare Objekte" nach "zugewiesene Objekte"











Sonntag, 27. Oktober 2013

Release Notes AvERP2014 sortiert nach Kategorie und Menü

Fast 300 Einträge in der AvERP 2014 Release Notes.
Da fällt der Überblick schwer.
Ich habe mir die Mühe gemacht, die einzelnen Änderungen nach Möglichkeit
nach Bereich1 Menü Bereich2 Maskenname zu ordnen.

Änderungliste Averp2014 nach Kategorien sortiert
Link Öffnet die Tabelle auf Google-Drive

Freitag, 25. Oktober 2013

Wo war noch?? AvERP Hilfe Suche Menüpunkt

Wenn ich erwartungsvoll kritisch die AvERP-DelphiXE betrachte geraten auch Details, die ich lange nicht beachtet habe in den Blickpunkt:
AvERP/Hilfe/Suche Menüpunkt - Suche weiteren Menüpunkt ist nicht neu - aber hilfreich. Wie oft steht man als AvERP-Anwender vor der Frage "Wo war noch die Funktion. die ich etwas näher betrachten wollte?"

Kurzer Count(*) über A_MASKEN zeigt 3037 Menüeinträge - 3037 Masken, Utilities oder Druck-Formulare. Da den Überblick zu behalten ist eher unmöglich und Navigationshilfen werden gerne entgegen genommen. Dazu gehört auch die Funktion  AvERP/Hilfe/Suche Menüpunkt.

Angenommen, man sucht "Übersicht".

Hilfe/Suche/Menüpunkt "*übersicht"

* als "Any Chars"-Jokerzeichen

findet
Favoriten/Verlaufsübersicht
Weiter Suchen dann
Favoriten/Einkaufsübersicht
und weiter
Verkauf/Verkaufsübersicht
Disposition/Dispositionsübersicht

Einkauf/Einkaufsübersicht
Fertigung/Fertigungsplanungsübersicht
.../ Fertigungsauftragsübersicht

.../Rückerfassungsübersicht
Fertigung/Werkstattübersicht
Projektplanung/Projektplanungsübersicht
Projektübersichten/Projektübersicht
auch
Seriennummernübersicht
Informationssysteme/Verkaufsinformation/Angebots-u.Auftragsübersicht
usw.

 
Funktioniert auch nach Umstellung der Systemsprache auf English
wenn denn eine Englische Übersetzung zugeordnet ist...


Anmerkung zur "Neuen" schnellen AvERP-DELPHIXE-Version:
Es werden von den SYNERPY-Entwicklern intensiv Korrekturen vorgenommen und im Download als Release Candidate Programmdateien v.2014.02zur Verfügung gestellt. Ich komme kaum nach den Downloadbereich zu aktualisieren


 

Dienstag, 10. September 2013

Installation: Klassik neben DelphiXE

So schnell wie die neue AvERP.exe Version 6.1 zu bedienen ist habe ich mir AvERP schon seit langem gewünscht:
- Programmstart Hauptmenü - Aufruf Startbildschirm < 2 Sekunden
- Aufruf komplexer Masken, wie Angebots-Auftragsverwaltung mit Laden der Daten quasi ohne Wartezeit.

Trotzdem und auch zum Vergleich hätte ich die Vorversion doch gerne auf dem gleichen Rechner zur Verfügung.


Bisher hat jede neue Programmversion über die Logik des Boostrappers AvERPStart.exe dafür gesorgt, das die Client-Kopie - üblicherweise auf C:\AvERP, sowie der Link auf den Desktop gnadenlos aktualisert wurde. (Es sei den die Konfiguration in AVERPSTART.ini wurde geändert.)

Freundlicherweise hält die Version 6.1 alle lokalen Anwendungsdaten Daten insbesondere die AvERPConnect.cfg  in  %AppData/Roaming/AvERP, so daß keine Überlagerung mit den Anwendungsdaten der Version 4 auftritt.


Version 4
Version 6
Programmverzeichnis C:\Program Files (x86)\AVERP
C:\Program Files (x86)\AVERP\DELPHIXE

alle AvERP*.exe und *.dll


AVERPCONNECT.CFG
ohne AVERPCONNECT.CFG




%AppData\Roaming\AvERP AVERPSTART.ini
nicht genutzt

AVERPLANGUAGE.ini
???



AVERPCONNECT.CFG



AVERP.exe



AVERPDruck.dll



GDS32.DLL



libeay32.dll



ssleay32.dll
aktualisiert aus [Programmverzeichnis]

[AVERPWORKDIR] JARLIBS


ML


AVERP.exe


AVERPCONNECT.CFG


AvERPCube.dll


GDS32.DLL





AvERPStart.exe umbenannt AvERPStart425

Link auf Desktop


Ziel [Programmverzeichnis]\AvERPStart.exe
[Programmverzeichnis]\AvERPStart.exe
Ausführen in [Programmverzeichnis]
%AppData\Roaming\AvERP

 Aufruf von AvERPStart.exe im Programmverzeichnis sorgt für die Version 6.1 dafür daß eine AVERPCONNECT.CFG in %AppData\Roaming\AvERP angelegt wird, falls nicht dort vorhanden und die notwendigen Binaries (*.exe *.dll) dort aktuell sind. Ein Link auf AvERPStart wird auf dem Desktop angelegt.

In der Version 4.2 werden AvERPConnect und die Binaries (*.exe *.dll) mit dem in AVERPSTART.ini hinterlegten AVERPVWORKDIR abgeglichen. Ein Link AvERPStart auf den Desktop wird nicht erstellt, wenn Aufruf über Link AvERPStart[425] (willkürlich umbenannt) erfolgt.

Für WIN-7 liegt die AVERPSTART.ini auf  %AppData/Roaming/AvERP und setzt
[AVERPSTART]
AVERPWORKDIR=C:\AVERP425
(für WinXP war unter Windows/System32 zu suchen)


09-2013 - AvERP 2014.01 Finale Version im Download incl. Release Notes

AvERP 2014.01 steht seit 06.09.2013 im SYNERPY Download bereit.

Vor Veröffentlichung der detailieren Änderungsliste die wichtigsten Änderungen:

1. AvERP.exe Der Client in DelphiXE!

2.Fachhandelskasse

3.Magento-Schnittstelle

Release Notes im SYNERPY Download: http://www.synerpy.de/cm/Data/Release/AvERP-Neuerungen%202014.pdf

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






Donnerstag, 27. Juni 2013

AvERP-Designer für Fortgeschrittene

Nachdem die Seite "Keine Angst vor dem AvERP-Designer" gerne besucht wird, soll es eine Fortsetzung geben:

Ersatzteil-Etiketten in Kundensprache
FRDFR4BETT
FRDFR4BETT2
Ausdruck Ersatzteil-Etiketten aus Auftrag (zu jeder Position ein Etikett)
Aus Auftragsposition

Studie: Zunächst konstante Texte in Deutsch

Aufgabe
Die festen deutschen Bezeichnungen
Auftrag
Ihre Best-Nr.
Bezeichnung
Artikel-Nr.
Ihre Art.Nr.
Menge

Bei Sprachwahl Englisch in Englisch Drucken




So sieht es schon aus...

ToDo
Druck Dialog mit Vorschlag der Druck-Sprache aktivieren
Sprache sinnvoll vorbelegen
Übersetzung der festen Texte in AvERP-DB anlegen

Druck-Dialog? Dann bFormShow True
Ob vor dem Druck die Maske zur Abfrage weiterer Parameter
mit den Knöpfen „OK“ und „Abbruch“ geöffnet wird, hängt von der
Eigenschaft „bFormShow = True“ des Objekts FRDFR4BETT selber ab.

Druck-Dialog ergänzen
Initial enthält ein Druck-Dialog nur die Knöpfe „Abbrechen“ und „OK“.

Über frmDruckDesignSteuerung und Doppel-Klick auf Tlabel werden zunächst die Label_2
bis Label_7 hinzugefügt.

Vorher auf den Druck-Dialog den Cursor über Click ungefähr dort positionieren, wo die neuen Label landen sollen.
Außerdem wird ein Feld TMaskEdit zur Eingabe der Sprache benötigt.
Anschließend in der Design Steuerung den DM1-Modus aktivieren um die neuen Label über Drag – und Drop zurechtzurücken.



Über Caption können im DM1-Modus die Label direkt benannt werden.
Auch die anderen Eigeschaften wie Left und Top können direkt geändert werden.

Zur gemeinsamen Ausrichtung mehrer Objekte diese mit gehaltener Shift-Taste anklicken und hier den gemeinsamen Left-Wert 204 vergeben.
Klick ins Leere hebt die Gruppierung auf.


 
In der Maske sind nun alle Label sinnvoll benannt.
Das Eingabefeld auf EDIT_1 umbenannt.

Die Sprache wird über die ID s in der Tabelle BSPRA gesteuert,
hier halt 1 D Deutsch, 2 ENG Englisch, 5 CN Chinesisch, 9 Französisch,
11 Flämisch/Niederländisch.

Chinesich hier vorerst in Klammern, solange AvERP wegen der verwendeten Delphi-Version kein Unicode unterstützt wird es mit Druck in Chinesisch Nichts werden, aber wir geben die Hoffnung nicht auf!
Sprache sinnvoll vorbelegen OnFormShow

OnFormShow (Rechtsklick auf Maske, Objectinspector aufrufen,
Rechtsklick ins Graue, OnFormShow checken)

Begin
EDIT_1.text := 1;
End;