This is a new site that's currently running on alpha code. There are going to be bugs. If you discover any, please report them on the site's issues page (GitHub account required). Thanks.
Warning: Many URLs are going to change. Refer to the README file to discover which library project's documentation has been completed.
Project: Message Dialogue Components.
Unit: PJMessageDialog.
Class: TPJVCLMsgDlg
Applies to: ~>3.0
property DlgType: LongWord;
This property provides an alternative method to setting the ButtonGroup and Kind properties using a subset of the constants used to customise the MessageBox Windows API function via its uType parameter. However, not all the API flags are supported.
DlgType is never stored in a form file - it’s value is determined by the ButtonGroup and Kind property values and whether a help button is displayed. Changing any of these values modifies the value of DlgType. Conversely, setting DlgType can update one or more of the ButtonGroup, Buttons and Kind properties.
Often the value of DlgType will change as soon as it is set because of the presence of any unsupported values, whether a help button is displayed or if a required value has not been provided.
Reading and writing the property are dealt with separately below.
DlgType supports a combination of various categories of constants that are ORd together.
The buttons displayed in the dialogue box can be determined by specifying one, and only one, of the following constants. Setting one of these values also updates the ButtonGroup property, which in turn updates the Buttons property.
| Constant | Buttons Displayed | New ButtonGroup Value |
|---|---|---|
MB_OK |
A single OK button | bgOK |
MB_OKCANCEL |
OK and Cancel | bgOKCancel |
MB_ABORTRETRYIGNORE |
Abort, Retry and Cancel | bgAbortRetryIgnore |
MB_YESNOCANCEL |
Yes, No and Cancel | bgYesNoCancel |
MB_YESNO |
Yes and No | bgYesNo |
MB_RETRYCANCEL |
Retry and Cancel | bgRetryCancel |
MB_CANCELTRYCONTINUE |
Cancel, Try Again and Continue | bgCancelTryContinue |
If any other value in the range $00000000 to $0000000F is specified then ButtonGroup is set to bgUnknown and the value in DlgType is replaced by UNKNOWN_BUTTONGROUP (defined in PJMessageDialog.pas). To check for an unknown or invalid button group first set DlgType then perform the following test:
begin
if PJVCLMsgDlg1.DlgType and MB_TYPEMASK = UNKNOWN_BUTTONGROUP then
// button group unknown or unsupported
end;
The kind of dialogue box (its icon, default title, etc.) is specified by ORing one of the following constants with one of those used to determine the button group. Setting one of these values updates the Kind property.
| Constant | Icon used | Default Title | New Kind Value |
|---|---|---|---|
MB_ICONEXCLAMATION |
System exclamation icon | “Warning” | mkWarning |
MB_ICONWARNING |
System exclamation icon | “Warning” | mkWarning |
MB_ICONINFORMATION |
System information icon | “Information” | mkInformation |
MB_ICONASTERISK |
System information icon | “Information” | mkInformation |
MB_ICONQUESTION |
System confirmation icon | “Confirm” | mkQuery |
MB_ICONSTOP |
System error icon | “Error” | mkError |
MB_ICONERROR |
System error icon | “Error” | mkError |
MB_ICONHAND |
System error icon | “Error” | mkError |
MB_USERICON |
Per IconResource property | Per Application.Title property | mkUser |
If any other value in the range $00000010 to $000000F0 is specified then Kind is set to mkUnknown and the value in DlgType is replaced by UNKNOWN_ICON (defined in PJMessageDialog.pas). To check for an unknown or invalid dialogue kind first set DlgType then perform the following test:
begin
if PJVCLMsgDlg1.DlgType and MB_ICONMASK = UNKNOWN_ICON then
// dialogue kind unknown or not supported
end;
In the standard Windows API call specifying MB_HELP causes a help button to be displayed. In this component including MB_HELP in DlgType causes mbHelp to be included in the Buttons property. This may or may not cause a help button to be displayed, according to whether mdoAutoHelpBtn is included in the Options property.
Including MB_HELP in DlgType does not necessarily mean it will be included in the property when read. See the “Help Button” description in the “Reading DlgType” section below for details.
Note: Because of the way the Buttons and ButtonGroup properties interact, including MB_HELP in DlgType can cause ButtonGroup to be set to bgUnknown. To avoid this make sure you include mdoGroupIgnoresHelp in the Options property.
The value returned when DlgType is read does not directly relate to the value set. This is because the value of DlgType is not stored and its value when read is calculated from the values of various other properties. Consequently any unsupported flags are stripped away. Furthermore DlgType introduces some new flags to indicate errors.
Factors that determine the value of DlgType are:
Each of these factors is discussed separately below.
The button group component of DlgType is set according to the value of the ButtonGroup property as per the following table:
| ButtonGroup Value | Flag included in DlgType |
|---|---|
bgAbortRetryIgnore |
MB_ABORTRETRYIGNORE |
bgOK |
MB_OK |
bgOKCancel |
MB_OKCANCEL |
bgRetryCancel |
MB_RETRYCANCEL |
bgYesNo |
MB_YESNO |
bgYesNoCancel |
MB_YESNOCANCEL |
bgUnknown |
UNKNOWN_BUTTONGROUP |
bgCancelTryContinue |
MB_CANCELTRYCONTINUE |
UNKNOWN_BUTTONGROUP and MB_CANCELTRYCONTINUE are both defined in the PJMessageDialog unit and the remaining values are defined in the Windows unit.
The button group values are ORd with other values stored in DlgType. To extract them AND the value of DlgType with MB_TYPEMASK. E.g.
var
BG: LongWord;
begin
BG := PJVCLMsgDlg1.DlgType and MB_TYPEMASK;
end;
The component of DlgType that identifies the kind of dialogue box displayed is set according to the value of the Kind property as per the following table:
| Kind Value | Flag included in DlgType |
|---|---|
mkWarning |
MB_ICONWARNING |
mkInformation |
MB_ICONINFORMATION |
mkQuery |
MB_ICONQUESTION |
mkError |
MB_ICONERROR |
mkUser |
MB_USERICON |
mkApplication |
UNKNOWN_ICON |
mkWinLogo |
UNKNOWN_ICON |
mkUnknown |
UNKNOWN_ICON |
UNKNOWN_ICON is defined in the PJMessageDialog unit. Note that mkWinLogo and mkApplication have no equivalent in the MessageBox API function and are therefore flagged as unknown.
The dialogue kind values are ORd with other values stored in DlgType. To extract them AND the value of DlgType with MB_ICONMASK. E.g.
var
K: LongWord;
begin
K := PJVCLMsgDlg1.DlgType and MB_ICONMASK;
end;
If the dialogue box will show a help button when displayed then MB_HELP is included in DlgType. This occurs in the following circumstances, depending on the Options property:
mdoAutoHelpBtn is included in Options and HelpContext is non-zero.mdoAutoHelpBtn is not included in Options and mrHelp is included in Buttons.These rules mean that the presence of MB_HELP when setting DlgType does not necessarily mean MB_HELP will be present when reading the property.
Check for the presence of MB_HELP like this:
begin
if PJVCLMsgDlg1.DlgType and MB_HELP = MB_HELP then
// MB_HELP present
end;