View Full Version : VARPG und Mehrsprachigkeit
Hallo,
ich versuche gerade ein VARPG Programm mehrsprachig zu machen. Ein RPG Programm liefert mir alle notwendigen Daten dazu, die dann per "eval %setatr" gesetzt werden. Mein Problem ist jedoch die Zeit die gebraucht wird um ein Fester umzusetzen(5-10sek). Meine Frage wäre ob es einen besseren Weg gibt, Mehrsprachigkeit umzusetzen als "showwin","visible=0", exsr UMSETZEN, "visible=1". Kann ich das Fenster vtl nur laden ohne das es angezeigt wird? Oder was kann ich tun damit die Umsetzung schneller vonstatten geht?
Gruß Martin
Normale Windows-Programme verwenden Ressourcen-DLL's, die die Sprachobjekte beinhalten.
Auch ein Formular (Windows-Fenster) ist ein solches Ressourcen-Objekt. Je nach Sprach-Einstellung wird ganz einfach ein anders Formular, sprich das Sprachformular aus der anderen DLL geladen.
Der Rest stimmt ja wieder.
Der Vorteil ist eben, dass nicht immer das Programm umgewandlet werden muss wenns eine neue Sprache gibt.
Vielleicht kannst du ja auch deine Display-Beschreibung / Formular auslagern ?
Normale Windows-Programme verwenden Ressourcen-DLL's, die die Sprachobjekte beinhalten.
Auch ein Formular (Windows-Fenster) ist ein solches Ressourcen-Objekt. Je nach Sprach-Einstellung wird ganz einfach ein anders Formular, sprich das Sprachformular aus der anderen DLL geladen.
Der Rest stimmt ja wieder.
Der Vorteil ist eben, dass nicht immer das Programm umgewandlet werden muss wenns eine neue Sprache gibt.
Vielleicht kannst du ja auch deine Display-Beschreibung / Formular auslagern ?
Hm...Also pro Sprache ein Formular. Der Nachteil wäre jedoch das man die sprachabhängigen Werte im Programm(Editor) setzen müsste, oder?
Und in VARPG hat man doch keine Display Beschreibungen wie bei ILRPG, bzw. in welcher Datei stehen diese Werte?
Was den Vorteil angeht, den habe ich ja auch da die Sprachabhängikeit durch AS400 Dateien abgebildet wird. Die Sprache könnte man dann zb. auch über ein Dropdownmenü auswählen.
Gruß Martin
Windows ist da eben anders.
Wenn du natürlich für jeden Text des Formulars einen Zugriff auf die AS/400 machen musst, kannst du dir die Dauer zum Öffnen des Formulares ja ausrechnen.
Ausserdem musst du in jedes Porgramm die Routinen für die Sprache einbinden.
Aber egal.
Der schnellste Weg wäre eigentlich dieser:
Auf der AS/400 halt eine Datei mit dem Name des Formulars und Feldes als Key.
Per SQL alle Texte des Formulares in einem Rutsch laden und dann per Select-Verteiler die Texte ins Formular schieben.
In Windows gibt es ein FormLoad-Ereignis, da gehört dann diese Routine hin (onOpen, onLoad o.ä.).
Damit beschränkt sich das Laden ausschließlich auf dieses eine Formular/Satzformat.
Was man sich da alles für Nachteile durch VARPG einhandelt ...
Windows ist da eben anders.
Wenn du natürlich für jeden Text des Formulars einen Zugriff auf die AS/400 machen musst, kannst du dir die Dauer zum Öffnen des Formulares ja ausrechnen.
Ausserdem musst du in jedes Porgramm die Routinen für die Sprache einbinden.
Aber egal.
Der schnellste Weg wäre eigentlich dieser:
Auf der AS/400 halt eine Datei mit dem Name des Formulars und Feldes als Key.
Per SQL alle Texte des Formulares in einem Rutsch laden und dann per Select-Verteiler die Texte ins Formular schieben.
In Windows gibt es ein FormLoad-Ereignis, da gehört dann diese Routine hin (onOpen, onLoad o.ä.).
Damit beschränkt sich das Laden ausschließlich auf dieses eine Formular/Satzformat.
Was man sich da alles für Nachteile durch VARPG einhandelt ...
In einem Rutsch laden ist wieder die ein Sache. Ich mache es mit der Methode: pro call ein Satz. Ist eigentlich genauso schnell als wenn ich alles in ein Array lade und das zurückgebe.(Wobei hier wieder das Problem wäre wie groß muss ich dieses definieren?)
Hm das FormLoad hatte ich noch nicht ausprobiert, ich hatte es bisher immer beim showwin(1. Aufruf des Formulars) gemacht.(2. Aufruf ist dann Visible=1)
Ich werde das mit FormLoad einmal ausprobieren. Danke für die Informationen.
Gruß Martin
EDIT:
Formload gibt es nicht als Ereignis. Meinten sie Create oder Active?(Ich mache es zzt im Create)
Gültige Ereignisse
Activate Close Create
DeActivate Destroy LClickTray
Moved RClickTray ReSize
ShutDown