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 Gnu Gettext verändert den Index meine Combofeldes (https://www.delphipraxis.net/86316-gnu-gettext-veraendert-den-index-meine-combofeldes.html)

DelphiManiac 12. Feb 2007 15:40


Gnu Gettext verändert den Index meine Combofeldes
 
Hallo,

ich nutze jetzt seit einigen Tagen die Komponente Gettext für die Übersetzung meines Programmes in Englisch.
Die ist an sich echt Klasse, vorallendingen, dass parsen der Dateien und dann das Pflegen der Po-Datei.

Mein Problem hier ist folgendes (evtl. ein Problem, dass andere auch schon hatten):

Ich habe z.B. ein Combofeld mit 2 Strings:

1. String ='manuell'
2. String ='digital'

diese Strings lasse ich jetzt per
Delphi-Quellcode:
UseLanguage('en');
TranslateComponent(self);
übersetzten.

Nun hat aber leider immer nach der Übersetzung der 1. String den Focus, und nicht der der zuletzt ausgewählt war :-(

Also meine Frage an euch, wie sage ich Gettext, dass er auch bitte die Auswahl unberührt lassen soll?

Danke schonmal..
Gruß
DelphiManiac

xZise 12. Feb 2007 15:44

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Du kannst bevor du "TranslateComponents" ausrufst den Index speichern, und denn danach wieder setzen.

[Edit]Wenn du es ganz dynamisch haben willst:
  • Schreibe eine Funktion, welche als Parameter die gleichen hat, wie "TranslateComponents"
  • Erstelle ein dynamisches Array, und setzte schreibe darein, alle Indexe der TComboBoxen
  • Schreibe in diese Funktion den Aufruf, der "Stammfunktion"
  • Schreibe jetzt alle Indexe zurück

Delphi-Quellcode:
type
  TData = record
    index : Integer;
    pointer : PComboBox;
  end;

procedure TranslateComponentEx(form : TForm);
var
  i : Integer;
  buffer : array of TData;
begin
  for i := 0 to form.ComponentCount do
  begin
    if form.Components[i] is TComboBox then
    begin
      SetLength(buffer, Length(buffer) + 1);
      buffer[High(buffer)].index := (form.Components[i] as TComboBox).ItemIndex;
      buffer[High(buffer)].pointer := (form.Components[i] as TComboBox);
    end;
  end;
  TranslateComponent(form);
  for i := 0 to Length(buffer) do
  begin
    buffer[i].pointer^.ItemIndex := buffer[i].index;
  end;
end;
Ich hoffe mal es geht so (is nur getippt) :P
[/edit]

hoika 12. Feb 2007 16:02

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Hallo,

ich will das gettext demnächst auch mal probieren.
Deshalb die Frage, wie kann es sein, dass der selektierte Eintrag verändert wird ?

Das TranslateComponent sollte doch als "erstes" im Form aufgerufen werden
(Anfang von FormCreate),
dann wird der zuletzt gewählte (gespeichert in DB oder so)
per Code selektiert ? oder habe ich das falsch verstanden.


Heiko

xZise 12. Feb 2007 16:04

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Zitat:

Zitat von hoika
Das TranslateComponent sollte doch als "erstes" im Form aufgerufen werden

Was ist, wenn du die Sprache zur Runtime änderst?

DelphiManiac 12. Feb 2007 16:08

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Hi,

ja natürlich könnte ich mir alle Indizes raussuchen, mir die merken und wieder zurückschreiben,
aber ehrlich gesagt, etwas müßig ist das schon :?
Vielleicht gibt es da noch eine andere Möglichkeit,... (speziell für Gnu Gettext)

Danke

DelphiManiac 12. Feb 2007 16:09

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Das Problem, habe ich ja nur, wenn ich die Sprache zur Laufzeit ändere,

dann sollte man ja ReTranslate dafür nehmen, habe aber TranslateComponent genommen, evtl. behebt das das Problem,
probiere es mal aus und melde mich dann..

DelphiManiac 12. Feb 2007 16:44

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Komischerweise gibt es die Funktion ReTranslate bei meiner Gettext Version gar nicht (nicht mehr??).

Nutzt jemand Gettext und kann mir sagen, wie ich zur Laufzeit die Sprache ändere???

Danke

xZise 12. Feb 2007 17:08

Re: Gnu Gettext verändert den Index meine Combofeldes
 
RetranslateComponent ;)


Zitat:

Zitat von DelphiManiac
Hi,

ja natürlich könnte ich mir alle Indizes raussuchen, mir die merken und wieder zurückschreiben,
aber ehrlich gesagt, etwas müßig ist das schon :?
Vielleicht gibt es da noch eine andere Möglichkeit,... (speziell für Gnu Gettext)

Danke

Ich habe in meinem ersten Beitrag hier gezeigt, wie man das ganz einfach in eine Funktion auslagert!

DelphiManiac 12. Feb 2007 17:23

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Ja sorry,

meine ja ReTranslateComponent...

aber genau diese Funktion gibt es in meinem gettext nicht :gruebel: :gruebel:

xZise 12. Feb 2007 17:34

Re: Gnu Gettext verändert den Index meine Combofeldes
 
Also ich besitzte diese Funktion noch, und das ist ~ 1 Mon her ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:54 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