Main Menü Design
-
Hallo alle zusammen,
bevor ich mich nun mit dem Fahrrad in die Sonne stürze wollte ich noch eine Frage loswerden.
In meinem Programm das ich schreibe verwende ich gnugettext um das ganze mehrsprachig zu machen. Das funktioniert auch soweit sehr gut. Nur habe ich jetzt ein Problem mit dem TMainMenu. Dieses MainMenu wird beim Programmstart dynamisch aufgebaut. Dafür habe ich zur Designzeit einfach eine TMainMenu-Komponente auf die Form gezogen und erstelle nur noch die nötigen Einträge.
Das Problem ist nun folgendes, wenn ich nun erst das Menü erzeuge und dann mit der gnugettext-Funktion 'TranslateComponent' die Form übersetze erscheint das Menü im alten WinXP-Design. Wenn ich 'TranslateComponent' vor dem erzeugen des Menü ausführe und die Menüeinträge mit z.B. ' MainItem->Caption = _(ACaption)' erzeuge, habe ich das Menü im schönen Design von Windows7. Wenn ich allerdings zur Laufzeit die Sprache ändere und dann mit 'RetranslateComponent' die Form wieder übersetze habe ich wieder nur das alte WinXP-Design meines MainMenüs.Auch das versuchweise verwenden des Jvgnugettext der Jedi-Komponenten brachte keine Besserung.
Kann mir da jemand einen Tipp geben wie dieses Problem umgangen werden kann? Ich dachte schon an die Möglichkeit, bei jeder Änderung der Sprache das Menü zu löschen und wieder neu aufzubauen.Vielen Dank in Voraus,
Grüße Netzschleicher
-
So, ich habe mir das ganze nochmal in einer Testanwendung zusammengesteckt und dabei herausgefunden, das es an der TImageList zu liegen scheint. Wenn dem TMainMenu keine ImageList zugewiesen ist funktioniert alles prima. Wenn ich aber eine TImageList dem TMainMenu zuweise, gibt es beim Überstetzen die geschilderten Probleme.
Ich habe mir jetzt folgendermaßen geholfen:
MainMenu->Images = NULL; UseLanguage(ConfigReadString("Environment", "Language", "")); TranslateComponent(this); MainMenu->Images = MenuImageList;