Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Reihenfolge der Buttons einer MessageBox (https://www.delphipraxis.net/62784-reihenfolge-der-buttons-einer-messagebox.html)

Baeuerle 9. Feb 2006 14:43


Reihenfolge der Buttons einer MessageBox
 
Hallo zusammen,

ist es möglich die Reihenfolge der Buttons einer Messagebox zu ändern ?

Delphi-Quellcode:
MessageBox(Handle,PChar('Bla Bla'),PChar('Warnung'),MB_YESNOCANCEL or MB_ICONWARNING);
Ergibt: YES | NO | CANCEL

Ich hätte aber gerne CANCEL | NO | YES

Habt Ihr eine Idee ausser selber ein Formular zu basteln ???

Danke

Matze 9. Feb 2006 14:44

Re: Reihenfolge der Buttons einer MessageBox
 
Hallo,

ob's mit der MessageBox geht, weiß ich nicht, mit einem Message-Dialog müsste dies gehen: Delphi-Referenz durchsuchenCreateMessageDialog.

Baeuerle 9. Feb 2006 15:02

Re: Reihenfolge der Buttons einer MessageBox
 
Nicht wirklich,

wenn muss ich Createmessagedialog selbst ändern

Auszug aus Createmessagedialog:

Delphi-Quellcode:
 if mbOk in Buttons then DefaultButton := mbOk else
      if mbYes in Buttons then DefaultButton := mbYes else
        DefaultButton := mbRetry;
    if mbCancel in Buttons then CancelButton := mbCancel else
      if mbNo in Buttons then CancelButton := mbNo else
        CancelButton := mbOk;

Matze 9. Feb 2006 15:17

Re: Reihenfolge der Buttons einer MessageBox
 
Auch wenn die Buttonreihenfolge sehr ungewohnt ist und sicher nicht zum Bedienkonfort des Anwenders beiträgt, sollte es so eigentlich klappen. :gruebel:

Delphi-Quellcode:
var
  f: TForm;

  // ...

  f := CreateMessageDialog('Warnung', mtInformation, MBYESNOCANCEL);
  try
    (f.FindComponent('Cancel') as TButton).Caption := 'Ja';
    (f.FindComponent('Yes') as TButton).Caption := 'Abbrechen';
    f.ShowModal;
  finally
    FreeAndNil(f);
  end;
end;

freak4fun 9. Feb 2006 15:33

Re: Reihenfolge der Buttons einer MessageBox
 
Zitat:

Zitat von Matze
Auch wenn die Buttonreihenfolge sehr ungewohnt ist und sicher nicht zum Bedienkonfort des Anwenders beiträgt, sollte es so eigentlich klappen. :gruebel:

Delphi-Quellcode:
var
  f: TForm;

  // ...

  f := CreateMessageDialog('Warnung', mtInformation, MBYESNOCANCEL);
  try
    (f.FindComponent('Cancel') as TButton).Caption := 'Ja';
    (f.FindComponent('Yes') as TButton).Caption := 'Abbrechen';
    f.ShowModal;
  finally
    FreeAndNil(f);
  end;
end;

Wird da nicht nur die Caption geändert? :wiejetzt: Wenn ich auf Cancel drücke soll auch abgebrochen werden und nicht IdYes gesendet werden. :gruebel:

MfG
freak

Matze 9. Feb 2006 15:36

Re: Reihenfolge der Buttons einer MessageBox
 
Zitat:

Zitat von freak4fun
Wird da nicht nur die Caption geändert? :wiejetzt: Wenn ich auf Cancel drücke soll auch abgebrochen werden und nicht IdYes gesendet werden. :gruebel:

Das ist korrekt. Auf Anhieb weiß ich gerade nicht, wie man die Rückgabewerte ändert, aber das geht sicher auch.

Nachtrag: Das könnte so in der Art gehen:

Delphi-Quellcode:
  f := CreateMessageDialog('Test', mtInformation, MBYESNOCANCEL);
  try
    with (f.FindComponent('Cancel') as TButton) do
    begin
      Caption := 'Ja';
      ModalResult := IDYES;
    end;
    with (f.FindComponent('Yes') as TButton)do
    begin
      Caption := 'Abbrechen';
      ModalResult := IDCANCEL;
    end;
    f.ShowModal;
  finally
    FreeAndNil(f);
  end;

NicoDE 9. Feb 2006 15:49

Re: Reihenfolge der Buttons einer MessageBox
 
Zitat:

Zitat von Baeuerle
Habt Ihr eine Idee ausser selber ein Formular zu basteln?

Nein, aber man könnte den 'Cancel'-Button zum Standard-Button erklären (mittels Flag).


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