Root > Integral parts > Options > Dialogs page > MS Classic

MS Classic

Previous pageReturn to chapter overviewNext page   

This is setup options for MS Classic dialog (edtMSClassic). They are located at Dialogs tab.



MS Classic dialog options


Note: error messages in dialogs are controlled by nested exceptions behaviour options.


1. "Ask user for send consent" (.edoShowSendErrorReportOption) option will ask user for their consent before sending bug report to developer - by showing "Please tell us about the problem" and presenting "Send Error Report" and "Don't send" buttons.


This option has no effect if you haven't specified any sending methods. In this case you'll see only one "OK" button. For example:



Asking for consent is unchecked or there is no sending method available



Asking for consent is checked and sending method present


Important: be aware that sending user's data without a consent violates GDPR. Violators of GDPR may be fined up to €20 million, or up to 4% of the annual worldwide turnover of the preceding financial year, whichever is greater. We recommend to seek advice from GDPR consulting company before disabling consent. See also: Security Considerations.



2. Default choice is selected by enabling/disabling "Default choice: send report" (.edoSendErrorReportChecked) option. If this option is checked - the default choice is to send the report. If this option is unchecked - then the default choice is NOT to send the report. Default choice affects which button (option) will be highlighted/selected when dialog is shown.



3. "Show 'click here' link" (.edoShowDetailsButton) option adds a "To see what data the error report contains, click here." line to the dialog. A "click here" part is a hyper-link which opens a EurekaLog style dialog in "detailed" mode. For example:



"Show 'click here' link" option is unchecked



"Show 'click here' link" option is checked



4. "Ask user for steps to reproduce" (.loAppendReproduceText) option shows a memo with "What were you doing when the problem happened (optional)?" header. For example:




"Ask user for steps to reproduce" option is unchecked



"Ask user for steps to reproduce" option is checked



5. "Show e-mail control" (.edoShowEMailControl) option shows the edit for user's e-mail address. You can get/set this e-mail manually by using GetUserEMail and SetUserEmail functions. For example:



"Show e-mail control" option is unchecked



"Show e-mail control" option is checked



6. "Mandatory e-mail" (.edoMandatoryEMail) option will not allow user to close dialog without entering a proper e-mail. This option have no effect if e-mail input control is not visible. Use this option to force user to specify e-mail. This options is useful if you perform delayed/queued report sending manually. For example, you store your bug report in folder, then some application pick up/send/process this folder - and you want bug reports to have end user e-mail for contacting it.



7. "Only when sending" (.edoMandatoryEMailOnlyWhenSending) option modifies mandatory e-mail option. When this option is disabled - e-mail will always be required. When this option is enabled - e-mail will be optional if user closes dialog without sending report. Use this option if you want user e-mail specified, and you perform sending immediately (via EurekaLog).



8. "Show a custom 'Help' button" (.edoShowCustomButton) option shows a "Help" button in the left-bottom corner of the dialog. You can assign your code on this button via the OnCustomButtonClick event.



"Show a custom 'Help' button" option is unchecked



"Show a custom 'Help' button" option is checked


Note: while the proposed usage for this button is to act as "Help on this error" button, but you can freely implement any other behavior. You can implement arbitrary behavior by assigning OnCustomButtonClick event, and you can change caption of this button by either altering localization options at design-time or assigning a new value to CurrentEurekaLogOptions.CustomizedTexts[mtDialog_CustomButtonCaption].



9. "Replace 'Application' with real application name" (.edoUseRealName) option will replace "application" word in all messages on the error dialog with FileDescripton field from version information of main executable (not from module where exception has occurred) - so called "real application name" (in this article). The usual places for such replacements include:


Window's caption is replaced to real application name.
"The application has encountered a problem" in the header.
"Restart application" - a checkbox to restart application.
"Terminate application" - a checkbox to terminate application.
"We have created an error report that you can send to help us improve application" - a description for send consent's asking.


If there is no version information available or FileDescription field is empty - then this option will have no effect and you'll see the standard "application" instead of description.


In the example below: the FileDescription field of main .exe contains 'Sample Application' string.



"Replace 'application' with real application name" option is unchecked



"Replace 'application' with real application name" option is checked


Usually this option is used together with "Replace error icon with real application icon" option (see below) to get a fully personalized view.



10. "Replace error icon with real application icon" (.edoUseRealIcon) option will replace standard IDI_ERROR icon to icon of the main .exe (i.e. the first icon). For example:




"Replace error icon with real application icon" option is unchecked



"Replace error icon with real application icon" option is checked


Usually this option is used together with "Replace 'application' with real application name" option (see above) to get a fully personalized view.



11. "Modal window" (.edoShowModal) option makes error dialog modal. Modal means that only error dialog will be accessible. All other windows in current thread will be disabled (user will not be able to interact with them). Windows from other processes and from other threads within the same process will be accessible. When this option is unchecked - no other windows will be disabled.


Note: usually it's not good idea to uncheck "Owner window" option when "Modal window" option is checked.



12. "Owner window" (.edoOwnedWindow) option makes error dialog an owned window to currently active window (owner window). Here: Owner-Owned relation is used in system's meaning (as relation between two HWND) as opposed to Delphi's meaning (as relation between two TComponent).


Checked: error dialog will be displayed as owned window to currently active window. If there is no active window - this option will have no effect. Being owned places several constraints on a window. Generally, owner-owned windows act as group. For example, an owned window is always above its owner in the z-order. Both owner and owned windows "share" the same button on taskbar (actually, owned window do not have taskbar button). An owned window is hidden when its owner is minimized.

Unchecked: error dialog will not be related to any other window. It will be standalone window.


Note: usually it's not good idea to uncheck "Owner window" option when "Modal window" option is checked.



13. "Right-To-Left" option enables Right-To-Left layout. This is global option that affects all EurekaLog run-time dialogs. Unchecked position indicate left-to-right layout (default), checked position indicate right-to-left layout used in some middle eastern languages. This option can also be altered at design-time via Localization page. This option can also be altered at run-time by changing CurrentEurekaLogOptions.CustomizedTexts[mtRTLDialog].



14. "Show dialog in Top-Most state" (.edoShowInTopMostMode) option sets the HWND_TOPMOST position to error dialog. If this option is checked then error window will appear above all other non-TopMost windows. If this option is unchecked then HWND_TOPMOST will not be set. Instead, a timer is run. This timer will call SetForegroundWindow for error dialog, if it was covered by any other process's windows. Windows from other processes can cover error window. Windows from current process, which are created after error dialog can cover error dialog too. This timer doesn't work in TopMost mode.



15. "Do nothing" / "Show 'Restart' checkbox" / "Show 'Terminate' checkbox" after N errors (.TerminateBtnOperation, .ErrorsNumberToShowTerminateBtn, .edoRestartChecked) option controls the visibility of "restart" and "terminate" checkboxes:



"Do nothing" option is selected or error count is less than the specified count.



"Show 'Terminate' checkbox" options is selected and error count is more than the specified count.


The "Checked" option controls if this checkbox is initially checked or unchecked. If "Checked" option is checked, then when MS Classic dialog appears with restart/terminate checkbox visible - this checkbox will be checked. And the opposite: if the "Checked" option is not checked, then restart/terminate checkbox will be unchecked, when dialog appears. Of course, this option have no effect, if checkbox is not visible (for example, if you select "Do nothing" option).


A "after N errors" part is controls, when to show restart/terminate checkbox. Again, this part is ignored, if you select "Do nothing" option. Value of 0 means that restart/terminate checkbox will be visible always. Value of 1 means that checkbox will be displayed only in second error dialog. Value of 2 means that you got two error dialog without checkbox and 3rd dialog will have it. And so on.


At run-time: when user checks restart/terminate checkbox, then your application will be restarted or terminated after closing error dialog and saving and sending bug report (if enabled). If user unchecks the checkbox - then your application will continue to run.



There is a similar option in Restart & Recovery options;
It's not recommended to enable both options (restart in "restart/recovery" page and this feature) to avoid confusion for end-users. If you do enable both options - be sure to select same values in both options (e.g. "restart" + "restart" or "terminate" + "terminate", but not "restart" + "terminate" or "terminate" + "restart");
If restart/terminate is enforced (for example, when it is dictated by restart/recovery options or when emergency safe mode is activated) - then restart/terminate checkbox will be visible and disabled.
EurekaLog may terminate your application regardless of these options when it encounters a fatal problem. For example, out of memory error or memory corruption will generate bug report and terminate your application - because it is not possible to continue normal execution after memory problems. See also "Use safe mode to handle special exceptions" option.



16. "Close every exception dialog after M seconds" (.AutoCloseDialogSecs) option allows you to automatically close exception dialogs after timeout of inactivity. Value of 0 means disabling of such feature - i.e. each dialog may be closed only manually by user (via clicking on dialog's buttons). Any other value (> 0) means that dialog will be closed after that amount of seconds, passed since its popup. For example, if you specify 180 seconds - then dialog will be closed exactly after 3 minutes, if user didn't closed it before.


This option is useful to auto-close error dialogs in possible non-interactive scenarios. Note, that it may be preferable to select other dialog type (non-GUI) in such cases.


Note: this option specifies the delay of user's inactivity. If user moves mouse, presses buttons or generates any other input in dialog - auto-close timer will reset. Therefore, setting this option to, say, 5 seconds does not mean that dialog will be closed after 5 seconds. It may stay for, say, 1 minute - but only if user is working with it. Dialog will be closed after 5 seconds if user is away (not moving mouse, etc.).



See also:

MS Classic dialog for general description of this dialog's type

Send feedback... Build date: 2022-03-28
Last edited: 2021-04-27
The documentation team uses the feedback submitted to improve the EurekaLog documentation. We do not use your e-mail address for any other purpose. We will remove your e-mail address from our system after the issue you are reporting has been resolved. While we are working to resolve this issue, we may send you an e-mail message to request more information about your feedback. After the issues have been addressed, we may send you an email message to let you know that your feedback has been addressed.

Permanent link to this article: