Entwickler-Ecke

Sonstiges (Delphi) - Caption der Buttons in MessageDlg ändern


Klaus D. - So 05.10.03 17:51
Titel: Caption der Buttons in MessageDlg ändern
Hey

Ist es irgendwie möglich den Text der z.Bsp.im MessageDlg zur Auswahl stehenden Buttons zu ändern ?

Danke und Tschüß Klaus

Moderiert von user profile iconTino: Titel geändert.


Tino - Mo 06.10.03 10:32

Hallo,

du müsstest wahrscheinlich den Dialog mit hilfe von CreateMessageDialog erstellen lassen. Durch diese Funktion bekommst du ein TForm Objekt. Dieses Objekt verfügt über die Funktion Suche in: Delphi-Forum, Delphi-Library FINDCOMPONENT. Diese Funktion bekommt als Parameter den Namen der zufindenden Komponente. Hier die entsprechenden Namen:

Delphi-Quelltext
1:
2:
3:
  ButtonNames: array[TMsgDlgBtn] of string = (
    'Yes''No''OK''Cancel''Abort''Retry''Ignore''All''NoToAll',
    'YesToAll''Help');

Wenn du den Button mit FindComponent gefunden hast kannst du die Caption Eigenschaft überschreiben und dann erst die MessageBox anzeigen.

Gruß
Tino


Klaus D. - Di 07.10.03 19:49

Hallo Tino

Ich bekomme es leider nicht gebacken über den Namen auf die Caption der Buttons zuzugreifen. Ich würde mich über ein wenig mehr Text sehr freuen.

Meine Versuche:

Delphi-Quelltext
1:
2:
3:
CreateMessageDialog('Text', mtInformation, mbYesNoCancel);
FindComponent(ButtonNames[mbYes]);
.......?

Danke und Tschö Klaus


Tino - Di 07.10.03 20:01

Mal ein Beispiel. Mit Hilfe der Funktion CreateMessageDialog bekommst du eine TForm Objekt zurück:

Delphi-Quelltext
1:
2:
3:
Var
  Form: tForm;
  Button: tComponent;



Delphi-Quelltext
1:
Form := CreateMessageDialog ('Text', mtInformation, mbYesNoCancel);                    

Jetzt kannst du mit der Methode FindComponent auf die Buttons zurgreifen:

Delphi-Quelltext
1:
Button := Form.FindComponent ('Yes');                    

Bevor du jetzt auf den Button zugreifst solltest du Prüfen ob die Variable auch nicht nil und ein TButton ist:

Delphi-Quelltext
1:
If Assigned (Button) and (Button is tButton) Then                    

dann kannst du mit einen Typecast auf den Button zugreifen:

Delphi-Quelltext
1:
tButton (Button).Caption := 'Hallo';                    

Ich hoffe das hat dir jetzt geholfen. Keine Garantie ob das so funktioniert... habs nicht getestet.

Gruß
Tino