Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi "Ja - Ignorieren - Cancel" mit MessageBox (https://www.delphipraxis.net/83393-ja-ignorieren-cancel-mit-messagebox.html)

xZise 1. Jan 2007 21:31


"Ja - Ignorieren - Cancel" mit MessageBox
 
Kann ich mithilfe der MessageBox mir selber die Buttons "Ja"-"Ignorieren"-"Cancel" zusammenstellen?

Oder geht das nur über MessageDlg? Dann ist meine Frage: Wie mache ich das "Mehrsprachig"? Normalerweise ist es ja bei MessageBoxen, dass die Buttons in der Windowssprache sind. (Deshalb benutzte ich auch nur noch diese Messages)

alzaimar 1. Jan 2007 21:36

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Hi xZise,

Bastel Dir deine eigene MessageBox. Ich glaub, ich poste mal eine Lösung (automatische Berechnung der Fenstergröße anhand des Textes, der Buttons und der Überschrift) in der Code-Library.

Luckie 1. Jan 2007 21:51

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Moment: http://www.delphipraxis.net/internal...ct.php?t=98946 ;) Ob das nun besser oder schechter als ein selbst gebauter Dialog ist, musst du selber entscheiden.
Wenn du allerdings die Beschriftung der Schaltflächen änderst, bist natürlich auch du wieder für die Lokalisierung verantwortlich.

xZise 1. Jan 2007 22:11

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Zitat:

Zitat von Luckie
Wenn du allerdings die Beschriftung der Schaltflächen änderst, bist natürlich auch du wieder für die Lokalisierung verantwortlich.

Deshalb benutze ich ja "MessageBox", damit die Schaltflächen die richtige Sprache haben.
Gibt es nicht eine Methode in Delphi wie "LocalizeWindowsStrings('Cancel')"?

Luckie 1. Jan 2007 22:24

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Wozu brauchst du die dann noch? Eventuell solltst du dir mal Bei Google suchengnugettext angucken.

xZise 1. Jan 2007 22:38

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Kann den gnugettext Die Buttons, welche bei "MessageBox" von Windows Übersetzt werden, automatisch übersetzen, in die jeweilige Sprache (und es existiert von mir keine .mo-Datei)?

Ich weiß zwar gerade nicht wo das Verständnisproblem liegt, aber ich brauche eine "MessageBox" die eine eigene Buttonzusammensetzung hergibt. Der Hauptgrund, warum ich das über MB mache und nicht über MessageDlg ist, dass die MD-Strings in einer Datei drinne stehen, und mit dem Komplieren feststehen. Bei der MessageBox sind das die "Windowstexte". Und jetzt war meine erweiterte Frage: Komme ich an die Windowstexte ran, dass ich mir ein MD bauen kann, mit übersetzten Buttons.

Und zwar möchte ich nicht die Buttons übersetzten, sondern sie "Systemstrings" nehmen.

alzaimar 1. Jan 2007 23:01

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier, vielleicht bringt dir das was: Die Deklaration ist -parametertechnisch- die Gleiche wie die von CsMessageBox. CsInputBox funktioniert genauso wie InputBox etc.

Ich muss dazu sagen, das ich die Komponenten (TEdit und TBitBtn) selbst nicht verwende, sondern viel 'hübschere' von DevExpress.
Hier das Interface:
Delphi-Quellcode:
Function csMessageDlg(Const Msg: String; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;

Procedure csShowError(Const aMsg: String);
Function csConfirm(Const aMsg: String): Boolean;
Function csInputBox(Const ACaption, APrompt, ADefault: String): String;
Function csInputQuery(Const ACaption, APrompt: String; Var Value: String): Boolean;
Procedure csShowMessage(Const aMsg: String);
Var
  ButtonCaptions: Array[TMsgDlgBtn] Of String = (
    '&Ja', '&Nein', '&OK', 'A&bbruch', '&Beenden', '&Wiederholen', '&Ignorieren',
    'A&lle', 'Alle N&ein', 'Alle J&a', '&Hilfe');

  DialogCaptions: Array[TMsgDlgType] Of String = ('Warnung', 'Fehler',
    'Information', 'Bestätigung', '');
Luckies Ansatz ist aber bestimmt besser...

[edit] ooops ohne anhang bringt das ja nix :mrgreen: [/edit]

xZise 2. Jan 2007 10:53

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Und was ist, wenn ich es einen Engländer geben würde, welcher ein Englisches OS besitzt?

OregonGhost 2. Jan 2007 12:20

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Die große Frage ist, ob der Engländer überhaupt etwas mit deiner deutschen Fehlermeldung anfangen kann. Es ist nicht unbedingt schlecht, dass die Button-Beschriftungen in derselben Sprache sind wie die Meldungen - wenn du aber die Meldungen eh übersetzen musst, tut es auch nicht weh, die Button-Beschriftungen zu übersetzen.
Anders ausgedrückt, es ist unerheblich, ob die Button-Beschriftungen in der Windows-Sprache sind, wenn die Meldungen selbst es nicht sind. Wenn er deine deutsche Meldung verstehen kann, versteht er auch die deutschen Button-Beschriftungen.

Edit:
Dass Windows in der Messagebox die Buttons in der Windows-Sprache beschriftet, ist kein toller Service von Windows, sondern liegt einfach daran, dass Windows einerseits nicht alle Sprachen enthalten kann, andererseits nicht wissen kann, welche Sprache deine Anwendung hat. Es ist also eigentlich ein Bug, wenn in einem deutschsprachigen Programm englische Buttons erscheinen.

xZise 2. Jan 2007 13:22

Re: "Ja - Ignorieren - Cancel" mit MessageBox
 
Hmmm dass stimmt schon...

Obwohl das Problem ja bei mir ist, wenn ich die Anwendung auf englisch schreibe, dass die Buttons von "MD" immernoch deutsch sind, weil ich ja eine deutsche IDE besitzte (oder stimmt das nicht?)...

Aber mit einem eigenen Dialog müsste es gehen ;)

Ich habe es jetzt erstmal auf "YNC" ungestellt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz