Entwickler-Ecke

Sonstiges (Delphi) - Änderung der Sprache im MessageDlg zur Laufzeit


nimra - Fr 28.03.03 15:45
Titel: Änderung der Sprache im MessageDlg zur Laufzeit
Hallo zusammen,

hat irgendjemand ein Vorstellung, wie man die im MessageDlg verwendete Sprache zur Laufzeit verändern kann?

Armin

Moderiert von user profile iconTino: Absätze entfernt.


Tomac - Fr 28.03.03 15:54

Was genau meinst du mit der Sprache? Wenn du den Text meinst, dann könntest du das ja so machen:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
var s1,s2:string;
begin
s1:='Das ist eine Nachricht';
s2:='This is a message';

messagedlg(s1,mtinformation,[mbok],0);  //Auf Deutsch
messagedlg(s2,mtinformation,[mbok],0);  //Auf Englisch


nimra - Fr 28.03.03 15:57

Ich meine nicht den Text, sondern die Caption und die Buttons (zB: Ja/Nein - Yes/No)


Tomac - Fr 28.03.03 18:02

Das Problem hatte ich auch schon mal, konnte es aber nicht lösen. Ich glaube es liegt an der Delphi-Version (Sprache).


Gausi - Fr 28.03.03 18:21

wenn du die Buttons auf deutsch haben willst, dann kannst du es mit

Delphi-Quelltext
1:
with application do Messagebox('Das ist die Nachricht...','...und das die Caption',MB_OK);                    

probieren. Geht aber nur mit Windows (glaub ich). Vorrausetzung ist ausserdem, dass die Windows-Version deutsch ist.

Anstelle von MB_OK geht auch MB_YESNO, MB_YESNOCANCEL, MB_OKCANCEL usw.


wulfskin - Fr 28.03.03 19:12

Das übersetzt aber nicht die Sprache der Buttons. Aber ich denke das geht auch nicht, da die Sprache in der Datei consts.pas festgelegt wird und die Namen dann mit hineinkompiliert werden. Einzige Möglichkeit: Eigenen Dialog erstellen!

Gruß wulfskin!


Christian S. - Fr 28.03.03 19:16

Doch, das funktioniert! Ich habe es selbst schon so gemacht. Allerdings direkt mit Application.MessageBox, aber das ist ja nur Geschmackssache.


Delete - Fr 28.03.03 19:20

Die Messagebox von TApplication nimmt seine Caption für die Buttons von Windows und somit die Sprache von Windows. Der MessageDLG ist eine Borland Kreation und nimmt die Captions der Buttons aus der Const.pas und die ist von Delphi abhängig und dessen Sparchversion abhängig.


Renegade - Sa 29.03.03 13:07

Da hat Luckie recht!

Man muß sich also überlegen, was man erreichen will.

Zum einen kann man das Prog zu erstellen, daß es sich an die Vorgaben (in diesem Fall Sprache) von Windows richtet - benutze MessageBox.

Will man aber ein Prog haben, welches die Einstellungen von Win ignoriert muß man entweder den MessageDLG benutzen (Sprache ist von vornherein festgelegt - siehe Delphi-Version) oder aber man muß eigene Dialoge proggen.

Es gibt außerdem noch dir Möglichkeit auf die Windows-Dialoge direkt zuzugreifen - es ist nur nicht zu empfehlen - zu kompliziert und Fehleranfällig.

Gruß Renegade


Delete - Sa 29.03.03 14:46

Renegade hat folgendes geschrieben:
Es gibt außerdem noch dir Möglichkeit auf die Windows-Dialoge direkt zuzugreifen

Ob ich nun

Delphi-Quelltext
1:
Application.Messagebox(Terxt, Caption, Flags);                    

schreibe oder

Delphi-Quelltext
1:
Messagebox(Handle, Text, Caption, Flags);                    

Macht keinen Unterschied. Apllication.Messagebox ist nur die Kapselung, vom Messagebox-Aufruf.
Zitat:
- es ist nur nicht zu empfehlen - zu kompliziert und Fehleranfällig.

Ein kleiner Scherz zum Mittag oder wie?