Change button texts on message dialog
Today customer wanted me to change the typical ‘OK’/'Cancel’ on one of the message dialogs in our app. While browsing through Delphi help and Windows SDK I came up with the idea to use CreateMessageDialog() function:
CreateMessageDialog returns a dialog of the type specified by the DlgType parameter and with the buttons indicated by the Buttons parameter.
Note the … returns a dialog … part here: I now have control over the TForm the function produces and all I have to do, is change captions on the TButton components on this form:
...
var
i: integer;
begin
with CreateMessageDialog(
'Do You want to do something destructive today?',
mtConfirmation,
[mbYes, mbNo]) do try
// go through all the components on the form
for i := 0 to ComponentCount - 1 do
// if we have a button ...
if Components[i] is TButton then
// it's the 'Yes' button
if TButton(Components[i]).ModalResult =
mrYes then
TButton(Components[i]).Caption := 'Yeah!'
else // otherwise it's the 'No' button
TButton(Components[i]).Caption := 'Nope';
// CreateMessageDialog() onlt creates the form
if ShowModal() = mrYes then
DoSomeThingDestructive()
else
ForgetAboutIt();
finally
Free();
end;
...
Of course, You can use other combination of buttons (eg. mbYesNoCancel) when creating the dialog and the appropriate modal results when changing captions before showing it to user.
Here’s the result of the code snippet above:

Like this:
This entry was posted on May 17, 2007 at 12:01 pm and is filed under delphi, messagebox. You can subscribe via RSS 2.0 feed to this post's comments. You can comment below, or link to this permanent URL from your own site.
September 4, 2010 at 4:00 pm
Thank you very much !!