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 Messagedlg formatieren bzw. Buttons auf deutsch (https://www.delphipraxis.net/41842-messagedlg-formatieren-bzw-buttons-auf-deutsch.html)

spoona 9. Mär 2005 14:54


Messagedlg formatieren bzw. Buttons auf deutsch
 
Hallo,

also ich habe folgendes Problem. Ich lasse einen messagedlg erscheinen, um zu fragen, ob eine Kontonummer erstellt werden soll. Das Problem ist jetzt einfach, das die Titelleiste und die Buttons auf Englisch (mbYes,mbNo) sind. Nicht dass man es nicht versteht, aber ich finde das Layout dann nicht wirklich passend. Es liegt wohl daran, dass ich die englische Version von delphi 7 habe, aber gibt es trotzdem irgendwie die Möglichkeit die Buttons und die Titelleiste ins deutsche umzuändern?
Vielen Dank für Eure Hilfe
Gruß Spoona

uschi 9. Mär 2005 15:00

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
ja, man geht auf borland.de und bestellt seine delphi version.


ich verstehe die fragen nicht von den leuten die gecrackte software ziehen und dann noch support erwarten.


sry aber ist der 4 thread wo diese frage gestellt wird.

jfheins 9. Mär 2005 15:00

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Nimm die API-Funktion MessageBox (unit Windows), die zeigt die Buttons immer in der jeweiligen Sprache an ....

Achtung, letzter Beitrag vor dem OT ...

SubData 9. Mär 2005 15:01

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Es kann auch vorkommen, dass Betriebe ne englische Version verwenden, die gekauft ist, bzw. die englischen Versionen sing ggf. billiger und werden deshalb gekauft.
Also nicht jeder der ne englische Version hat, hat die kopiert ;>

uschi 9. Mär 2005 15:03

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
die warscheinlichkeit liegt bei 99%

keine deutsche softwareschmiede verkauft seine anwendungen mit englischen messageboxen

Ultimator 9. Mär 2005 15:06

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

keine deutsche softwareschmiede verkauft seine anwendungen mit englischen messageboxen
Das ist auch der Grund, weshalb er sie auf Deutsch haben möchte, vermut ich mal stark :roll:

Alex_ITA01 9. Mär 2005 15:06

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
sorry uschi muss dir wiedersprechen...
Unsere Firma schon!!!
Wir liefern Software auch ins Ausland und was wollen die Franzosen, Belgier, Amerikaner... mit deutschen Texten? :-)

MFG Alex

Rastaman 9. Mär 2005 15:08

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von uschi
ich verstehe die fragen nicht von den leuten die gecrackte software ziehen und dann noch support erwarten.

Und wenn er die Personal hat?

uschi 9. Mär 2005 15:09

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von Alex_ITA01
sorry uschi muss dir wiedersprechen...
Unsere Firma schon!!!
Wir liefern Software auch ins Ausland und was wollen die Franzosen, Belgier, Amerikaner... mit deutschen Texten? :-)

MFG Alex


tolle und sehr sinnvolle antwort, aber mir wars von vornerein klar das sowas 9 mal kluges und 10mal dummes kommt.

SubData 9. Mär 2005 15:10

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Da er vor ein paar Tagen noch geschrieben hat, dass er ne Delphi 8 Trial hat geh ich auch mal von ner Raubkopie aus -g-

alcaeus 9. Mär 2005 15:10

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von Alex_ITA01
sorry uschi muss dir wiedersprechen...
Unsere Firma schon!!!
Wir liefern Software auch ins Ausland und was wollen die Franzosen, Belgier, Amerikaner... mit deutschen Texten? :-)

FULL ACK!
Wir haben auch ein englisches Delphi, aber trotzdem deutsche Texte. Ich muss mal nachsehn warum, wir arbeiten nämlich viel mit eigenen Funktionen.

Greetz
alcaeus

SubData 9. Mär 2005 15:11

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von uschi
tolle und sehr sinnvolle antwort, aber mir wars von vornerein klar das sowas 9 mal kluges und 10mal dummes kommt.

Ich finde die Antwort keineswegs dumm sondern sehr logisch -.-

Ultimator 9. Mär 2005 15:11

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Ist die eigentliche Frage nicht schon längst beantwortet und ihr müsst euch immer noch streiten? :roll:

Tyrael Y. 9. Mär 2005 15:11

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
..wir benutzen/kaufen auch grundsätzlich alle Programme auf englisch...

P.S.:

auch im Quelltext sind alle Bezeichner und Kommentare immer auf englisch

..auch, wenn wir unsere Software für verschiedene Sprachen entwickeln ;)


mfg

jfheins 9. Mär 2005 15:15

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Es ist echt nicht zu glauben. Da fragt einer, wie er seine MessageBoxen auf Deutsch statt auf Englisch hinbekommt, und ihr unterstellt ihm in null komma nix eine Raubkopie.

Zum Thema D8 > D7 ist bei D8 nicht ein D7 mit dabei ???

Und jetzt hört mal auf mit diesem geflame, sonst benutzt noch jemand die Suche (jaja, soll's geben) ... und findet das hier ... :roll:

fylo 9. Mär 2005 15:20

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Hi schaut euch den Code an:
Delphi-Quellcode:

unit myDialogs;

//##############################################################################

interface

uses Dialogs,Classes;

//##############################################################################


function MessageDlgDefault(const aCaption : string;
         const Msg : string;
         DlgType : TMsgDlgType;
         Buttons : TMsgDlgButtons;
         DefButton : integer;
         HelpCtx : longint): integer;

//##############################################################################


implementation

uses Windows, Controls, sysutils, forms, StdCtrls, Graphics,
     IniFiles;


const { Copied from Dialogs }
  ModalResults : array[TMsgDlgBtn] of integer = (mrYes, mrNo, mrOk,
    mrCancel, mrAbort, mrRetry, mrIgnore, mrAll,
    mrNoToAll, mrYesToAll, 0);


var { Filled during unit initialization }
  ButtonCaptions : array[TMsgDlgBtn] of string;
  AskNoMoreCaption: string;


//##############################################################################



{-----------------------------------------------------------------------------
  Procedure: ModalResultToBtn
  Arguments: res : TModalResult
  Result:   TMsgDlgBtn
  Comment:  Convert a modal result to a TMsgDlgBtn code
-----------------------------------------------------------------------------}
function ModalResultToBtn(res : TModalResult): TMsgDlgBtn;
begin
  for Result := Low(Result) to High(Result) do
  begin
    if ModalResults[Result] = res then
      Exit;
  end; { For }
  Result := mbHelp; // to remove warning only
  Assert(False, 'ModalResultToBtn: unknown modalresult ' +
    IntToStr(res));
end; { ModalResultToBtn }



{-----------------------------------------------------------------------------
  Procedure: AdjustButtons
  Arguments: aForm : TForm
  Result:   None
  Comment:  When the button captions on the message form are translated
             the button size and as a consequence the button positions need
             to be adjusted
-----------------------------------------------------------------------------}
procedure AdjustButtons(aForm : TForm);
var buttons : TList;
    btnWidth : integer;
    btnGap : integer;

  procedure CollectButtons;
  var i : integer;
  begin
    for i := 0 to aForm.Controlcount - 1 do
      if aForm.Controls[i] is TButton then
        buttons.Add(aForm.Controls[i]);
  end; { CollectButtons }

  procedure MeasureButtons;
  var i : integer;
      textrect : TRect;
      w : integer;
  begin
    btnWidth := TButton(buttons[0]).Width;
    aForm.Canvas.Font := aForm.Font;
    for i := 0 to buttons.Count - 1 do
    begin
      TextRect := Rect(0, 0, 0, 0);
      Windows.DrawText(aform.canvas.handle,
        PChar(TButton(buttons[i]).Caption), - 1,
        TextRect,
        DT_CALCRECT or DT_LEFT or DT_SINGLELINE);
      with TextRect do w := Right - Left + 16;
      if w > btnWidth then btnWidth := w;
    end; { For }
    if buttons.Count > 1 then
      btnGap := TButton(buttons[1]).Left -
        TButton(buttons[0]).Left -
        TButton(buttons[0]).Width
    else
      btnGap := 0;
  end; { MeasureButtons }

  procedure SizeButtons;
  var i : integer;
  begin
    for i := 0 to buttons.Count - 1 do
      TButton(buttons[i]).Width := btnWidth;
  end; { SizeButtons }

  procedure ArrangeButtons;
  var i : integer;
      total, left : integer;
  begin
    total := (buttons.Count - 1) * btnGap;
    for i := 0 to buttons.Count - 1 do
      Inc(total, TButton(buttons[i]).Width);
    left := (aForm.ClientWidth - total) div 2;
    if left < 0 then
    begin
      aForm.Width := aForm.Width + 2 * Abs(left) + 16;
      left := 8;
    end; { If }
    for i := 0 to buttons.Count - 1 do
    begin
      TButton(buttons[i]).Left := left;
      Inc(left, btnWidth + btnGap);
    end;
  end; { ArrangeButtons }
begin
  buttons := TList.Create;
  try
    CollectButtons;
    if buttons.Count = 0 then
      Exit;
    MeasureButtons;
    SizeButtons;
    ArrangeButtons;
  finally
    buttons.Free;
  end; { finally }
end; { AdjustButtons }



{-----------------------------------------------------------------------------
  Procedure: InitMsgForm
  Arguments: aForm : TForm; const aCaption : string; helpCtx : longint; DefButton : integer
  Result:   None
  Comment:  
-----------------------------------------------------------------------------}
procedure InitMsgForm(aForm : TForm; const aCaption : string;
  helpCtx : longint; DefButton : integer);
var
  i : integer;
  btn : TButton;
begin
  with aForm do
  begin
    if Length(aCaption) > 0 then
      Caption := aCaption;
    HelpContext := HelpCtx;
    for i := 0 to ComponentCount - 1 do
    begin
      if Components[i] is TButton then
      begin
        btn := TButton(Components[i]);
        btn.Default := btn.ModalResult = DefButton;
        if btn.Default then
          ActiveControl := Btn;
        {$IFNDEF STANDARDCAPTIONS}
        btn.Caption :=
          ButtonCaptions[ModalResultToBtn(btn.Modalresult)];
        {$ENDIF}
      end;
    end; { For }
    {$IFNDEF STANDARDCAPTIONS}
    AdjustButtons(aForm);
    {$ENDIF}
  end;
end; { InitMsgForm }



{-----------------------------------------------------------------------------
  Procedure: InitButtonCaptions
  Arguments: None
  Result:   None
  Comment:  
-----------------------------------------------------------------------------}
procedure InitButtonCaptions;
var sprache:string;
    ini,language_file:TiniFile;
begin
  ini:=tinifile.Create(extractFileDir(application.exeName)+'\'+inifile);
  sprache:=ini.ReadString('Main','Language','Deutsch');
  if fileexists(extractfiledir(application.ExeName)+'\language\'+sprache+'.language')
     then begin
          language_file:=tinifile.Create(extractfiledir(application.ExeName)+'\language\'+sprache+'.language');

          ButtonCaptions[mbYes]     := language_file.ReadString('MessageButtons','Yes','&Yes');
          ButtonCaptions[mbNo]      := language_file.ReadString('MessageButtons','No','&No');
          ButtonCaptions[mbOK]      := language_file.ReadString('MessageButtons','OK','OK');
          ButtonCaptions[mbCancel]  := language_file.ReadString('MessageButtons','Cancel','Cancel');
          ButtonCaptions[mbAbort]   := language_file.ReadString('MessageButtons','Abort','&Abort');
          ButtonCaptions[mbRetry]   := language_file.ReadString('MessageButtons','Retry','&Retry');
          ButtonCaptions[mbIgnore]  := language_file.ReadString('MessageButtons','Ignore','&Ignore');
          ButtonCaptions[mbAll]     := language_file.ReadString('MessageButtons','All','&All');
          ButtonCaptions[mbNoToAll] := language_file.ReadString('MessageButtons','NoToAll','N&o to All');
          ButtonCaptions[mbYesToAll] := language_file.ReadString('MessageButtons','YesToAll','Yes to &All');
          ButtonCaptions[mbHelp]    := language_file.ReadString('MessageButtons','Help','Help');
          end;
end; { InitButtonCaptions }



{-----------------------------------------------------------------------------
  Procedure: MessageDlgDefault
  Arguments: const aCaption : string; const Msg : string; DlgType : TMsgDlgType; Buttons : TMsgDlgButtons; DefButton : integer; HelpCtx : longint
  Result:   integer
  Comment:  Creates a messagedlg with translated button captions and a configurable
             default button and caption.
             @Param aCaption  Caption to use for the dialog. If empty the
                               default is used.
             @Param Msg       message to display
             @Param DlgType   type of dialog, see messagedlg online help
             @Param Buttons   buttons to display, see messagedlg online help
             @Param DefButton ModalResult of the button that should be the
                               default.
             @Param HelpCtx   help context (optional)
             @Returns the ModalResult of the dialog
-----------------------------------------------------------------------------}
function MessageDlgDefault(const aCaption : string; const Msg : string;
  DlgType : TMsgDlgType; Buttons : TMsgDlgButtons; DefButton : integer;
  HelpCtx : longint): integer;
var aForm : TForm;
begin { Defmessagedlg }
  InitButtonCaptions;
  aForm := CreateMessageDialog(Msg, DlgType, Buttons);
  try
    InitMsgForm(aForm, aCaption, helpCtx, DefButton);
    Result := aForm.ShowModal;
  finally
    aForm.Free;
  end;
end; { Defmessagedlg }
hab ich mal irgendwo gefunden, weiß aber nicht mehr wo :gruebel:

MathiasSimmack 9. Mär 2005 15:21

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von jfheins
Zum Thema D8 > D7 ist bei D8 nicht ein D7 mit dabei ???

Bei der Trial auch?

Alex_ITA01 9. Mär 2005 15:23

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Ich finde die Diskussion auch langsam echt sinnlos mit Raubkopien und so.
Er hat doch nur ne Frage gestellt...

@Uschi: Ich weiß ja nicht was du gegen meine Antwort hast aber ich finde sie sinnvoll, weil sie das Gegenteil von deiner Aussage ist (keine deutsche softwareschmiede verkauft seine anwendungen mit englischen messageboxen)!!!

MFG Alex

Chegga 9. Mär 2005 15:34

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Hi,

Achtung: Folgender Beitrag ist nicht OT

@ spoona: Hier im Forum suchenMessagedlg auf Deutsch
(Die Suche hätte es mal wieder getan... :roll: )

MfG Marc

[Edit] Thx Spider! Sorry @ Alex, ich meinte spoona [/Edit]

Ultimator 9. Mär 2005 15:35

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
@Chegga:
Zitat:

Keine Beiträge entsprechen Deinen Kriterien.
:?:

wfoertsch 9. Mär 2005 15:36

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von Chegga
Hi,

Achtung: Folgender Beitrag ist nicht OT

@ Alex ITA01: *Klick*
(Die Suche hätte es mal wieder getan... :roll: )

MfG Marc

will ja nich meckern aber der link geht net ;-)


gruss wolle

Chegga 9. Mär 2005 15:42

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Hi,

:shock:
wenn ich draufklicke, geht es einwandfrei.
Ich editiere mal den obigen Beitrag, vielleicht klappt's dann bei euch auch. :gruebel:

MfG Marc

Die Muhkuh 9. Mär 2005 15:43

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von Chegga
Hi,

:shock:
wenn ich draufklicke, geht es einwandfrei.
Ich editiere mal den obigen Beitrag, vielleicht klappt's dann bei euch auch. :gruebel:

MfG Marc

Sorry nochmal für OT:

Das liegt daran das du die Search_id gepostet hat. Die verändert sich ständig.

Alex_ITA01 9. Mär 2005 15:51

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
@chegga: wieso ist das an mich gerichtet?

Zitat:

@ Alex ITA01: Messagedlg auf Deutsch
(Die Suche hätte es mal wieder getan... )
Ich weiß doch, dass man mit einer deutschen Delphi-Version englische Texte z.B. in einer MessageBox benutzen kann und umgedreht...
Ich meinte ja nur, dass auch deutsche Firmen mit deutschen Softwareentwicklungsprogrammen englische Texte in die Software einbauen.

MFG Alex

PS: In unserer Firma wird je nach Projekt (Sprache) alles in der Software an die "Kundensprache" angepasst

spoona 9. Mär 2005 16:34

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Hallo, also was hier abgeht, is doch wirklich unter aller würde USCHI.
Stelle dir mal folgendes vor:

Dort ist ein Student, der soll laut Studienordnung nen Delphiprogramm abgeben.
Beim Asta bekommt er leider nur die Englische Enterprise Version, warum auch immer........
Also alles Legal und mit Lizenz. Zunächst muss er leider einer Trial Verion verwenden, da der Asta für einige Tage geschlossen hatte. Nun sizt er an seinem Projekt und stellt eine ganz einfache Frage und bekommt dann so eine beschränkte Antwort. Mann sollte sich vielleicht zunächst über den Hintergrund informieren und dann losschreien.
aber auch dir wünsche ich einen schönen Tag.
Übrigends mein chef (einer Softwarefirma) verwendet ebenso die englische Version, nur so am Rande....

So den anderen Danke ich für die Antwort, werde mal sehen was ich daraus machen kann.
Sonst melde ich mich bestimmt wieder. Sorry auch, dass ich die Frage zum wiederholten Male gestellt habe.
Auf der Suche nach meinem Problem habe ich den Beitrag leider übersehen.
Vielen Dank
Gruß Spoona

static_cast 9. Mär 2005 16:50

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Liste der Anhänge anzeigen (Anzahl: 1)
@spoona
Welchen Aufruf hast du denn benutzt für die MsgBox?

Abei mal ein Tool zum erstellen von MessagBoxen was ich sehr gut finde und auch selber immer nutze.


[OT]
Hmmm.... Gibt es eigentlich keine deutschen Raubkopien?

Ich persönlich nutze generell lieber Englische software, sei es bei Windows oder Delphi, alles auf Engl. klingt zwar doof aber da fühl ich mich wohler als bei den ganzen ollen Deutschen begriffen.

Aber mal nebenbei die großen versionen von Borland (Enterprise und Architekt) werd doch eh multilingual ausgelifert wenn es Firmen Volumelicenses sind.
[/OT]

spoona 10. Mär 2005 13:02

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Hallo,
vielen Dank für dein Tool, aber ist es nicht bißchen zu aufwendig jedesmal dieses Tool auszuführen?
Habe es mir aber auch nur kurz angeschaut. Aber vielen Dank, habe es jetzt ganz einfach mit der messagebox gemacht

Code:
Application.MessageBox('Konto unbekannt!Wollen Sie es jetzt erstellen?','Konto nicht gefunden',mb_YesNoCANCEL)
Wo ist denn generell der Unterschied zwischen messagebox und msgdlg, außer diesem Sprachkonflikt.
Gibt es beim messagedlg noch mächtigere zusätzliche Funktionen?

Vielen Dank
Gruß Spoona

Treffnix 10. Mär 2005 13:18

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Die werte für die Buttoncaptions stehen in der Unit "consts"
OK ist beispielsweise "SOKButton"

SubData 10. Mär 2005 13:39

Re: Messagedlg formatieren bzw. Buttons auf deutsch
 
Zitat:

Zitat von static_cast
[OT]
Hmmm.... Gibt es eigentlich keine deutschen Raubkopien?
[/OT]

Doch gibt es...
Und mal ganz davon abgesehen, dass es mir relativ egal ist ob jemand ne Raubkopie oder ne Originalversion verwendet, solange er nicht versucht daraus Profit zu schlagen.
Ich hab den ersten Monat auch ne Kopie von D7 EP verwendet, da wir erst getestet haben ob ein Umstieg von Delphi 4 auf Delphi 7 überhaupt Sinn macht. (Nein ne Trial hätte es nicht getan, da ich die BDE brauch -g-)

Also Raubkopie ist nicht gleich Raubkopie...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 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