Thema: Delphi in ini speichern

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.106 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 13. Jun 2003, 11:05
Moin Eleonora,

das Problem ist, das zum Zeitpunkt des Aufrufes der Übersetzung erst das Hauptformular existiert.

Wenn Du mal in der Projektdatei nachsiehst, siehst Du die Reihenfolge, in der die Formulare erzeugt werden. Das OnCreate wird aufgerufen, nachdem das jeweilige Formular, vollständig erzeugt wurde (also z.B. incl. aller weiterer darin enthaltenen Komponenten.

Da Deine Übersetzungsfunktion aber immer alle Formulare anspricht geht der Aufruf beim Zuweisen von Werten an Unterfenster schief, da diese noch gar nicht existieren.

Entweder Du packst den Aufruf für die Übersetzung in das OnCreate des letzten Formulares in der Liste (halte ich nicht für so sinnvoll, ein neues Formular und schon muss der Aufruf verschoben werden, oder Du benutzt eine Kennung für welches Formular übersetzt werden soll.
Dafür dürfte sich am Besten wohl die Eigenschaft Tag des anzuklickenden Menüpunktes eignen.
Dann würden auch nicht bei der Übersetzung eines Formulares, immer gleich alle anderen, wiederholt, mit übersetzt werden.

Da das Ganze auch im laufenden Programm erfolgen soll, kannst Du das dann unterscheiden, indem Du den Aufruf über language_germanClick(nil) machst, und den Sender prüfst. Ist der nil, dann werden die Einstellungen vom Programmstart angesprochen, ansonsten hat es jemand angeklickt.

Eine weitere Idee (die mir eigentlich besser gefällt)
Du erstellst für jedes Formular eine eigene Methode, je Sprache, in der die Text für das jeweilige Formular, eingestellt werden und rufst diese aus dem OnCreate jedes Formulares auf.
Bei den Menüpunkten für die Sprache werden dann der Reihe nach nur noch diese jeweiligen Methoden aufgerufen.
Dann hast Du auch alle Übersetzungen für jedes Formular direkt in der gleichen Unit, was sich bei Änderungen als günstig erweisen kann.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat