Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi WP5Tools und Localisation (https://www.delphipraxis.net/58466-wp5tools-und-localisation.html)

kingflo 7. Dez 2005 14:09


WP5Tools und Localisation
 
Hallo zusammen.
Hat von euch schon mal jemand WPLanguageControl aus WP5Tools für eine eigene Anwendung bzw ein eigenes Formular benutzt?
Denn ich brauch das jetzt, weiß aber nicht genau wie ich das machen muss.
Ich muss dann glaub ich mein Formular von der Klasse TWPCustomAttrDlg ableiten und dann damit arbeiten oder?

also wenn das zufällig schon mal jemand von euch benutzt hat wäre es nett, wenn sich der oder die jenige mit mir über pn in verbindung setzen könnte


danke

sakura 7. Dez 2005 14:36

Re: WP5Tools und Localisation
 
Zitat:

Zitat von kingflo
wenn sich der oder die jenige mit mir über pn in verbindung setzen könnte

Und warum nicht hier im Thread? :roll:

...:cat:...

Flocke 7. Dez 2005 15:09

Re: WP5Tools und Localisation
 
Was meinst du genau?

Ich bin der Standardprozedur gefolgt:

Eine TWPLanguageControl auf's Hauptformular gepackt dort über das Kontextmenü die Datei C:\Programme\WPTools5\Demos\Tasks\Localisation\WPT ools_DE.XML hineingeladen und GlobalLanguage = 'DE' gesetzt.

In TMainForm.FormCreate wird dann initialisiert initialisiert
Delphi-Quellcode:
procedure TMainForm.FormCreate(Sender: TObject);
begin
  //WPTOOLS5
  WPLangInterface := TWPLocalizationInterface.Create(WPLanguageControl);
  WPTools_LoadVCLStrings;
  WPTools_LoadActionStrings;
  WPLocalizeLoadForms := TRUE;
end;

kingflo 7. Dez 2005 15:15

Re: WP5Tools und Localisation
 
@Flocke
wenn man es so macht funktioniert es aber doch nur mit den Dialogen und Komponenten von WPTools oder?
ich möchte (bzw bin dabei) einen eigenen Dialog bzw Form zu entwerfen, die xml datei zu erweitern und dann soll es mit der Sprache halt auch beim eigenen Dialog funktionieren

Flocke 7. Dez 2005 15:42

Re: WP5Tools und Localisation
 
Ach so, du willst deine eigenen Dialoge darüber anpassen. Hab' ich noch nicht gemacht.

Eigentlich sollte alles, was du brauchst, in WPLngCtr.pas zu finden sein.

1. Du brauchst ein TWPLanguageControl.
2. Die Prozedur TWPLanguageControl.SaveForm erzeugt die XML-Daten für ein Formular
3. Die Prozedur TWPLanguageControl.LoadForm wendet die Einträge in den XML-Daten auf das geladene Formular an, ersetzt also die übersetzen Texte.

Du müsstest also in dein Programm einen Befehl einbauen, der jedes Formular lädt und mit TWPLanguageControl.SaveForm dumpt. Danach kannst du die XML-Datei mit TWPLanguageControl.SaveToFile abspeichern und extern bearbeiten.

Zur Laufzeit kannst du dann mit TWPLanguageControl.LoadFromFile diese Datei wieder einladen und in FormCreate mit TWPLanguageControl.LoadForm die Sprache anpassen.

Wie gesagt: alles graue Theorie, hab's selbst noch nicht gemacht.

kingflo 7. Dez 2005 19:27

Re: WP5Tools und Localisation
 
Danke erstmal ich werde mich da morgen wieder dran setzen thnks

kingflo 9. Dez 2005 12:56

Re: WP5Tools und Localisation
 
@flocke

Das funktioniert alles soweit, aber leider nicht bei menüs...
Weißt du warum? bei PopUp Menüs gehts super, aber die Eintrage aus einem Hauptmenü können nicht mit SaveForm gespeichert werden, wenn ich aber manuell den namen des eintrages in die xml liste schreibe, dann kann der Text auch mit LoadForm geladen werden.

weißt du eventuell woran das liegt?

Flocke 13. Dez 2005 13:31

Re: WP5Tools und Localisation
 
Zitat:

Zitat von kingflo
Das funktioniert alles soweit,mit Save und LoadForm aber leider nicht bei MainMenüs...
Weißt du warum?
Bei PopUp Menüs gehts super, aber die Eintrage aus einem Hauptmenü können nicht mit SaveForm gespeichert werden, wenn ich aber manuell den namen des eintrages in die xml liste schreibe, dann kann der Text auch mit LoadForm geladen werden.

weißt du eventuell woran das liegt? Bzw wie ich es am bessten Hinbekommen kann das MainMenü in die xml datei zu bekommen?

Hier habe ich einen Fehler in der WP-Tools Bibliothek gefunden. Wenn du die Quelltexte hast, dann kannst du in WPLngCtr.pas in Zeile 655-656 die Kommentarzeichen entfernen (ungetestet) und dann das Package aktualisieren. Bitte teile mir mit ob's dann funktioniert.

Delphi-Quellcode:
    procedure SaveMenuItems(Menu: TMenuItem);
    var
      mEntry: TWPXMLOneLevel;
    begin
      mEntry := XMLEntry.AddTagValue(Menu.Name, '');
      mEntry.ParamValue[CAPTION_PARAM] := Menu.Caption;
      mEntry.ParamValue[HINT_PARAM] := Menu.Hint;
        for m := 0 to Menu.Count - 1 do
          SaveMenuItems(Menu.Items[m]);
    end;
Zitat:

Zitat von kingflo
Sag mal oder weißt du vielleicht, wie ich einen String einzelnt in diesem Format

<Button1 C="Bearbeiten" />

hinzufügen kann? denn dann könnte ich unter anderem die Menu Namen einzeln hinzufügen, aber mit SaveString geht es leider nicht.

und wenn man den TWPXMLPropertyEditor benutzt kann man es über Branch -> Create Item with PARAMs und dann z.B folgendes eingeben:
Button1#C=test

Aber weißt du wie ich das in meinem Code machen kann?

Ich möchte also zu der geöffneten xml datei in WPLanguageControl1 einen String so wie oben beschrieben hinzufügen...
Ich habe schon alles mögliche versucht aber das bekomme ich irgendwie nicht hin.

Dafür könntest du das "BeforeSave"- oder "AfterSave"-Ereignis nutzen, dass den betreffenden TWPXMLOneLevel übergeben bekommt:
Delphi-Quellcode:
procedure TForm1.WPLanguageControl1.AfterSave(Sender: TWPLanguageControl; Form: TWinControl; XMLEntry: TWPXMLOneLevel);
var
  Entry: TWPXMLOneLevel;
begin
  Entry := XMLEntry.AddTagValue('Button1', '');
  Entry.ParamValue[CAPTION_PARAM] := 'Bearbeiten';
end;

Flocke 14. Dez 2005 09:34

Re: WP5Tools und Localisation
 
Zitat:

Zitat von kingflo
Ja sobald man noch m als integer variable deklariert hat geht es.
:thumb: ich weiß gar nicht wie ich dir danke soll...

Also danke.

Ist war ein bisschen ärgerlich, da ich mir jetzt schon eine eigene Funktion erstellt hatte um die Menüs zu speichern aber so wie jetzt ist es natürlich besser.
Also herzlichen dank

Und frohe weihnachten wünsch ich noch

flo

Zitat:

Zitat von kingflo
äh... misst

also das mit dem Speichern der Menüs geht jetzt zwar, aber laden tut er Sie leider nicht.
gespeichert sind die sachen jetzt unter <Mainmenu1>
aber laden kann er Sie nur wenn Sie unter dem Haupteintrag stehen, weil er die einträge wie normale komponenten laden kann.

Ich habe mir die procedure LoadForm auch mal angesehen, konnte aber nichts finden...


Ach und sag mal gibt es eventuell auch eine möglichkeit einen eintrag hinzuzufügen ohne das event Before - AfterSave zu benutzen?

Dann ist die Routine für das Laden und Speichern von Menüs wahrscheinlich noch überhaupt nicht richtig fertig geworden. Es sieht stark danach aus, dass irgendwann mit der Routine "SaveMenuItems" angefangen wurde, die entsprechende Routine "LoadMenuItems" aber nicht mehr geschrieben wurde (wohl weil es dann doch nicht gebraucht wurde).

Ich habe gerade mal ein Upgrade auf die Version 5.19.1 gemacht und die Routine hat sich noch nicht viel geändert. Allgemein kann man sagen: sie ist nicht ohne Einschränkungen allgemein nutzbar und wird wahrscheinlich immer nur dann erweitert, wenn es für die Dialoge von WPTools nötig wird.

Füge mal noch diese Änderungen in die Routine "SaveFormEx" ein (d.h. kommentiere den entsprechenden Bereich aus).

Delphi-Quellcode:
          if not NoDefault then
          begin
            (*
            if obj is TMenu then // TMainMenu, TPopupMenu
            begin
              if Menus then
                for i := 0 to TMenu(obj).Items.Count - 1 do
                  SaveMenuItems(TMenu(obj).Items[i]);
            end
            else
              if not (obj is TMenuItem) then // V4.08b - 'TMenuItem' - we saved these above already
            *)
              begin
                oCaption := ReadProp('Caption');
                oHint := ReadProp('Hint');

kingflo 14. Dez 2005 09:47

Re: WP5Tools und Localisation
 
danke ich habs hinbekommen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:50 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz