TTaskDialog is a non-visual component, which shows full-featured dialogs at runtime, dialogs with rich features like Windows TaskDialog API has. It is available on the Dialogs tab of the Component Palette. It is available since Lazarus 1.8.
Dialog is shown with the Execute() method, and if it gets True, property ModalResult has id of pressed button:
- id of standard button (OK, Cancel, Yes etc)
- id of custom button, which was specified in each button's ModalResult
Execute returns True if the dialog was opened successfully. The dialog cannot be shown for all different parameter settings, in this case the dialog is not shown and Execute returns False.
Property MainIcon can be set to values for standard icons: none, warning, error, information, shield.
Property RadioButton has the radio-button object, which was clicked.
This example shows how to create dialog in runtime, and to add custom buttons in runtime:
with TTaskDialog.Create(self) do try Title := 'Confirm removal'; Caption := 'Confirm'; Text := 'Remove selected item?'; CommonButtons := ; with TTaskDialogButtonItem(Buttons.Add) do begin Caption := 'Remove'; ModalResult := mrYes; end; with TTaskDialogButtonItem(Buttons.Add) do begin Caption := 'Keep'; ModalResult := mrNo; end; MainIcon := tdiQuestion; if Execute then if ModalResult = mrYes then ShowMessage('Item removed'); finally Free; end