Delphi-PRAXiS

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 Captions ändern (https://www.delphipraxis.net/64976-captions-aendern.html)

xZise 10. Mär 2006 16:03


Captions ändern
 
Ich habe ein Programm mit mehreren Formen:
In der einen kann man die Sprache einstellen! Wenn man dann auf akzeptieren klickt, ändert er auch alle Labels in der "MainForm"! (eingebunden über
Delphi-Quellcode:
implementation
  uses
    UMain;
)

Dabei schließt er die "Einstellungsform" mit dem Befehl:
Delphi-Quellcode:
Close
Wenn ich nun wieder in die Einstellungen gehe, sind die Labels nicht umgestellt, wenn sie es sein sollten...

Bernhard Geyer 10. Mär 2006 16:09

Re: Captions ändern
 
Aufgrund des Beispielcode hat meine Glaskugel folgenden Fehler gefunden:
Die 4-Pasdatei im 3 Projektordner ist in der Zeile 48 Fehlerhaft.

Was erwartest Du mit diesen Aussagen. Erklär uns erstmal wie dein Übersetzungsmechanismus (im Detail) überhaupt funktioniert (Code, Verweis auf fertige Lösung, ...). Da gibt es nämlich auch ca. 20 verschiedene Möglichkeiten.

konda 10. Mär 2006 16:10

Re: Captions ändern
 
Wie meinst du das jetzt genau? Ändert sich die Sprache auch in den Einstellungen? Und rufts du die Einstellungen auf nachdem du das Programm geschlossen hast und dann wieder gestartest hast oder wie? :?:

himitsu 10. Mär 2006 16:13

Re: Captions ändern
 
Ich denke mal das Einstellungsformular wird freigegeben und wenn es wieder geladen wird, dann wird es ja wieder in der ursprünglichen Sprache angezeigt. (oher soll es denn auch wissen, ob da dirgendwas anderes geladen wurde)

xZise 10. Mär 2006 16:19

Re: Captions ändern
 
Sorry, aber es ist so... Ich habe ganz viele Labels die geändert werden sollen!

Wenn man dann auf Okay klickt macht er folgendes:
Delphi-Quellcode:
ini.WriteBool('Extras', 'Englisch', English.Checked);
    if English.Checked then begin
      //dies funktioniert:
      UMain.FFreggels.Save.Caption := 'Save';
      UMain.FFreggels.Load.Caption := 'Load';
      UMain.FFreggels.Start.Caption := 'Start';
      UMain.FFreggels.Quit.Caption := 'Quit';
      UMain.FFreggels.Einstellung.Caption := 'Settings';
      UMain.FFreggels.Help.Caption := 'Help';
      UMain.FFreggels.label1.Caption := 'Freeze:';
      UMain.FFreggels.label2.Caption := 'Progress:';
      UMain.FFreggels.label3.Caption := 'Lives:';
      UMain.FFreggels.label4.Caption := 'Score:';
      UMain.FFreggels.label6.Caption := 'Lvl Steps:';
      UMain.FFreggels.label7.Caption := 'Time:';
      UMain.FFreggels.label8.Caption := 'Lvl score:';
      UMain.FFreggels.label9.Caption := 'Steps:';
      //dies funktioniert nicht:
      Einstellungen.Label2.Caption := 'Graphical configuration:';
      Einstellungen.Search.Caption := 'Browse';
      Einstellungen.BtnKeyChange.Caption := 'Change';
      Einstellungen.EndsRegist.Caption := 'Set Endings';
    end else begin
      //dies funktioniert:
      UMain.FFreggels.Save.Caption := 'Speichern';
      UMain.FFreggels.Load.Caption := 'Laden';
      UMain.FFreggels.Start.Caption := 'Starten';
      UMain.FFreggels.Quit.Caption := 'Beenden';
      UMain.FFreggels.Einstellung.Caption := 'Einstellungen';
      UMain.FFreggels.Help.Caption := 'Hilfe';
      UMain.FFreggels.label1.Caption := 'Geforen:';
      UMain.FFreggels.label2.Caption := 'Fortschritt:';
      UMain.FFreggels.label3.Caption := 'Leben:';
      UMain.FFreggels.label4.Caption := 'Punkte:';
      UMain.FFreggels.label6.Caption := 'Lvl Schritte:';
      UMain.FFreggels.label7.Caption := 'Zeit:';
      UMain.FFreggels.label8.Caption := 'Lvl Punkte:';
      UMain.FFreggels.label9.Caption := 'Schritte:';
      //dies funktioniert nicht:
      Einstellungen.Label2.Caption := 'Grafische Einstellungen:';
      Einstellungen.Search.Caption := 'Durchsuchen';
      Einstellungen.BtnKeyChange.Caption := 'Ändern';
      Einstellungen.EndsRegist.Caption := 'Endungen einstellen';
    end;
[...]
    close;
Wenn ich dann wieder die Form über ein Label lade
Delphi-Quellcode:
procedure TFFreggels.EinstellungClick(Sender: TObject);
begin
  Einstellungen.ShowModal;
end;
sind die oben gemachten änderungen NICHT übernommen.
Erst wenn ich das Prog beende und "neustarte"!

Hier Create und Free:
Delphi-Quellcode:
//OnCrate
procedure TFFreggels.FormCreate(Sender: TObject);
[...]
begin
  Einstellungen := TEinstellungen.Create(nil);
  [...]
end;

// OnClose
procedure TFFreggels.FormClose(Sender: TObject; var Action: TCloseAction);
[...]
begin
  [...]
  Einstellungen.Destroy;
end;
Ich hoffe das hilft euch weiter ...

Luckie 10. Mär 2006 16:21

Re: Captions ändern
 
Im OnCreate existieren die Komponenten deines Formulares wahrscheinlich noch nicht. Probiere es mal im OnShow Ereignis des Formulares.

xZise 10. Mär 2006 21:42

Re: Captions ändern
 
ne ;) Das ist ja das verwirrende, weil wenn ich neustarte (das Progg) hat er auch die restlichen Änderungen übernommen... Und da ist es ja im OnCreate...

Achso: Ich hab gerade eben mal das "close" rausgenommen und das mal gemacht und es tut sich NIX...

Seltsam nur das der andere Block dennoch ausgeführt wird :|

Edit:
Ich habe jetzt "Einstellungen" immer weggenommen... wüsste dann aber gerne in wie fern dies die aktuallisierung behindert ? :bouncing4:

edit: Damit es klar wird was:
Aus:
Delphi-Quellcode:
Einstellungen.Label2.Caption := 'Graphical configuration:';
      Einstellungen.Search.Caption := 'Browse';
      Einstellungen.BtnKeyChange.Caption := 'Change';
      Einstellungen.EndsRegist.Caption := 'Set Endings';
habe ich
Delphi-Quellcode:
Label2.Caption := 'Graphical configuration:';
      Search.Caption := 'Browse';
      BtnKeyChange.Caption := 'Change';
      EndsRegist.Caption := 'Set Endings';
gemacht ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.

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