TAdvTaskDialog blocking application

TAdvTaskDialog from VCL UI Pack ( current version and lower ) not working.

Call of "mydialog".execute show dialog and never return, whatever I click ...
( customRadioButtons used )
-> application is blocked...

In TMS Component Pack all is ok.

I cannot reproduce this.
Please provide a sample source project + provide information about what Delphi version you use with which we can reproduce this here.

Maybe  

try
    /// The program stops running - My note. If you click the button, the program continues to run
    ButtonChecked := TaskDlg.Execute;

    if ButtonChecked > IsBtn then
    begin
      case ButtonChecked of
        BtnPrint:  
        begin
          PrintExpandedText(ExpandedText)
 

When I drop a TAdvTaskDialog on the form and add the code in a button OnClick handler:


procedure TForm3.Button1Click(Sender: TObject);
begin
  advtaskdialog1.Title := 'title';
  advtaskdialog1.Content := 'content';
  advtaskdialog1.Execute;
  showmessage('done');
end;

This works as expected, the ShowMessage() is not called before the TAdvTaskDialog closed.

That's correct. But TAdvTaskDialog is never closed...

I don't have time right now. I'll get back to you later.

I have a similar issue with TAdvTaskDialog: I want to display a ProgressBar and update and close it from a separate process. However, the process does not run while the TaskDialog (with Option doProgressBar) is open:



        AdvTaskDialog1.Title:= 'Internal Restore ';

        AdvTaskDialog1.Instruction:= 'Restoring your internal backup database...';

        AdvTaskDialog1.Execute;

        FormBackup.InternalRestore(True);

        logini.WriteString('settings','BackupDate','');



Until the OK button closes the dialog, the FormBackup.InternalRestore function is not called. Also, an OK button is not needed when using the doProgressBar option; the dialog should be closable from the FormBackup.InternalRestore method.



It would seem that I cannot achieve what I want with this component. Is that correct or am I missing something?



Andrew



       

The TAdvTaskDialog.Execute is blocking for the main thread.
To monitor progress of an operation, you'd typically start this operation in a separate thread and then show the TAdvTaskDialog with progress indication. In this scenario, the TAdvTaskDialog will trigger the OnDialogProgress event from where you can update the progress position from the information of your  operation thread

That's what I thought. I can do that, but the TaskDialog 'OK' button is not appropriate for a ProgressBar option - it seems to be there by default and I can't get rid of it.

There is always minimum one button displayed.
For progress, you might want to have a Cancel button to cancel lengthy operations.
If you add cancel, you will not see the OK button.

I take your point, but they are all short-term operations which I would not want to have cancelled in mid file(s) transfer. Perhaps the OK button could be removable in a future upgrade.

We'll need to investigate if we can make the dialog appear with any button.