Autor Beitrag
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Di 11.02.03 23:55 
Ich brauche die Buttontexte die bei MessageDlg angezeigt werden, d.h. die mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore, mbAll und mbHelp Texte. Klar, daß ich die Texte auch selbst schreiben kann, aber es sollten die jeweiligen landesspezifischen Texte sein.

Weiß einer wie man an die Texte kommt.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 12.02.03 00:18 
Hi,

seit ich D6 Personal auf Englisch habe, weiß ich, dass MessageDlg Konstanten aus "Consts.pas" bezieht - und die sind nicht vom System, sondern von der installierten Delphi-Version (und -Sprache) abhängig.

AXMD
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 04:31 
Wenn du die API-Funktion Messagebox nimmst, dann sollten die Texte der Buttons in der jeweiligen Windowssprache haben.

Selbiges gilt üpbrigens auch für deine Icons. Der MessageDlg holt die sich (vermutlich) aus irgendeiner Borland DLL, wärend sich die Messagebox sich die Icons direkt von Windows holt.

Probier es mal aus.
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 09:52 
Wie schon bei Icon-Thread gesagt will ich meine eigene Message-Dialogfenster erstellen. Nicht daß ich denke, daß man mein Programm auch im Ausland nutzt, aber wenn ich etwas nachmache, dann will ich es auch richtig machen. Auch wenn einer dann nicht versteht was für eine Message es ist, er soll zumindest wissen was für ein Button es klickt.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 09:56 
Popov hat folgendes geschrieben:
Auch wenn einer dann nicht versteht was für eine Message es ist, er soll zumindest wissen was für ein Button es klickt.

Hm, wenn er die Meldung nicht versteht ... wie soll ihm das helfen, den richtigen Button zu benutzen? ... :?

Wie wäre MessageBoxIndirect? Hilft dir das irgendwie weiter? Das ist eine Box vom System, die dann landesspezifische Buttons haben dürfte. Und du kannst Text, Titel und Icon frei wählen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 10:24 
PS: Mal ehrlich, Popov, wozu die ganze Arbeit? - MessageBox (= API) ist nicht gleich MessageDlg (= Delphi). Wenn du MessageBox benutzt
ausblenden Quelltext
1:
2:
3:
4:
5:
if(MessageBox(wnd,pchar('Wollen Sie den Ordner ' + szFolder + 'löschen?'),
  '´sch gucke',MB_YESNOCANCEL or MB_DEFBUTTON2 or MB_ICONQUESTION) = ID_YES) then
begin
  { ... }
end;

dann hast du einen Dialog mit a) landesspezifischen Buttons und b) Icons je nach System.
Warum willst du also eine eigene Box erstellen? Unnötiger Aufwand.
:roll:

@AXMD: Hättest du genommen, was wir dir gesagt haben, hättest du dir das Übersetzen der Unit sparen können. :)
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Mi 12.02.03 12:41 
Hi,

@MATHIASSIMMACK: ich weiß, aber so sind auch die Fehlermeldungen auf "Deutsch" :wink:

AXMD
Popov
Gast
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 19:50 
MathiasSimmack hat folgendes geschrieben:
PS: Mal ehrlich, Popov, wozu die ganze Arbeit? - MessageBox (= API) ist nicht gleich MessageDlg (= Delphi).


Es geht nicht drum eine MessageBox zu erstellen. Ich weiß, daß es da eine große Auswahl gibt. Es geht darum, daß alle MessagesBoxen Modal sind. Einige meiner Fenster sind TopMost. Wenn also mein MainFormular eine MessageBox Meldung anzeigt und das zweite Fenster sichtbar und OnTop ist, schiebt sich das Top Fenster nach vorne und verdeckt die MessageBox. Man glaubt es nicht, aber das ist eine Möglichtkeit sein Programm zu blockieren. Nichts geht mehr und das Programm muß beendet werden. Die Modale MessageBox ist im Hintergrund und kann nicht geklickt werden.

Entweder ich mache also das TopMost aus meinem Fenster raus (das kann ich aber nicht) oder ich finde ein Ersatz für MessageBox.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 21:10 
Titel: du ex
Oder du experimentierst mal mit den Flags im letzten Parameter:
PSDK hat folgendes geschrieben:
MB_APPLMODAL
The user must respond to the message box before continuing work in the window identified by the hWnd parameter. However, the user can move to the windows of other threads and work in those windows.
Depending on the hierarchy of windows in the application, the user may be able to move to other windows within the thread. All child windows of the parent of the message box are automatically disabled, but popup windows are not.

MB_APPLMODAL is the default if neither MB_SYSTEMMODAL nor MB_TASKMODAL is specified.

MB_SYSTEMMODAL
Same as MB_APPLMODAL except that the message box has the WS_EX_TOPMOST style. Use system-modal message boxes to notify the user of serious, potentially damaging errors that require immediate attention (for example, running out of memory). This flag has no effect on the user's ability to interact with windows other than those associated with hWnd.

MB_TASKMODAL
Same as MB_APPLMODAL except that all the top-level windows belonging to the current thread are disabled if the hWnd parameter is NULL. Use this flag when the calling application or library does not have a window handle available but still needs to prevent input to other windows in the calling thread without suspending other threads.

Ausprobiert habe ich´s selbst nicht. Die Angaben sind aus dem PSDK und ohne Garantie, dass sie -in deinem Fall- wirklich was bringen.

Gruß.


PS: @AXMD; schrei nich´ so! :wink:
Ist die Frage beantwortet? Das Problem gelöst?

Dann klicke hier, um das Thema entsprechend zu markieren!