AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

MessageDlgPos mit geänderten Buttonnamen

Ein Thema von Shark99 · begonnen am 7. Aug 2015 · letzter Beitrag vom 7. Aug 2015
Antwort Antwort
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#1

MessageDlgPos mit geänderten Buttonnamen

  Alt 7. Aug 2015, 12:04
Ich nutze MessageDlgPos() recht oft. Wenn mein Programm in deutscher Sprache ist, aber ein englisches Windows installiert ist werden die Buttons immer als OK/Cancel, also auf Englisch angezeigt.

Ich habe eine Lösung gefunden mit der ich die Button-Captions bei so einem Dialog ändern kann:
Delphi-Quellcode:
function MyMessageDialog(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; Captions: array of string): Integer;
var
  aMsgDlg: TForm;
  i: Integer;
  dlgButton: TButton;
  CaptionIndex: Integer;
begin
  { Create the Dialog }
  { Dialog erzeugen }
  aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
  captionIndex := 0;
  { Loop through Objects in Dialog }
  { Über alle Objekte auf dem Dialog iterieren}
  for i := 0 to aMsgDlg.ComponentCount - 1 do
  begin
   { If the object is of type TButton, then }
   { Wenn es ein Button ist, dann...}
    if (aMsgDlg.Components[i] is TButton) then
    begin
      dlgButton := TButton(aMsgDlg.Components[i]);
      if CaptionIndex > High(Captions) then Break;
      { Give a new caption from our Captions array}
      { Schreibe Beschriftung entsprechend Captions array}
      dlgButton.Caption := Captions[CaptionIndex];
      Inc(CaptionIndex);
    end;
  end;
  Result := aMsgDlg.ShowModal;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if MyMessageDialog('How much...?', mtConfirmation, mbOKCancel,
    ['1', '2']) = mrOk then
    ShowMessage('"1" clicked')
  else
    ShowMessage('"2" clicked');
end;
Allerdings ist es keine Vollständige Lösung, weil ich nicht mehr die X/Y Koordinaten angeben kann wo der Dialog erscheinen soll. Auf den ersten Blick kann ich nur aMsgDlg.Position ändern.

Hat jemand eine bessere Lösung?

Geändert von Shark99 ( 7. Aug 2015 um 12:37 Uhr)
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#2

AW: MessageDlgPos mit geänderten Buttonnamen

  Alt 7. Aug 2015, 13:08
Allerdings ist es keine Vollständige Lösung, weil ich nicht mehr die X/Y Koordinaten angeben kann wo der Dialog erscheinen soll. Auf den ersten Blick kann ich nur aMsgDlg.Position ändern.
Erweitere die doch einfach die Funktion MyMessageDialog() um die Parameter ATop und ALeft

Delphi-Quellcode:
function MyMessageDialog(const Msg: string; DlgType: TMsgDlgType;
  Buttons: TMsgDlgButtons; Captions: array of string; ATop: Integer; ALeft: Integer): Integer;
und in der Funktion schreibst Du dann einfach:
Delphi-Quellcode:
  aMsgDlg := CreateMessageDialog(Msg, DlgType, Buttons);
  aMsgDlg.Top := ATop;
  aMsgDlg.Left := ALeft;
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
Shark99

Registriert seit: 16. Mai 2007
403 Beiträge
 
#3

AW: MessageDlgPos mit geänderten Buttonnamen

  Alt 7. Aug 2015, 14:29
Danke. Vor lauter Bäumen sah ich den Wald nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 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