在Delphi XE2 / XE3中执行以下代码
with TTaskDialog.Create(Self) do begin
try
if Execute then
ShowMessage('Success')
else
ShowMessage('Failed');
finally
Free;
end;
end;
无论您点击什么按钮关闭对话框,显示的消息始终为Success
。
将TTaskDialog.Execute
编写为
使用“执行”显示“任务”对话框。执行打开 任务选择对话框,当用户选择任务时返回true 点击打开。如果用户单击“取消”,则“执行”将返回false。
答案 0 :(得分:10)
似乎文档不正确,这是TTaskDialog.Execute
方法的执行流程:
TTaskDialog.Execute - > TCustomTaskDialog.Execute - > TCustomTaskDialog.DoExecute - > TaskDialogIndirect = S_OK?
正如您所看到的,只有当TaskDialogIndirect
函数返回S_OK时,方法Execute
的结果才是 true 。
要评估对话框的结果,您必须改为使用ModalResult
属性。
with TTaskDialog.Create(Self) do
begin
try
if Execute then
case ModalResult of
mrYes : ShowMessage('Success');
mrCancel : ShowMessage('Cancel');
else
ShowMessage('Another button was pressed');
end;
finally
Free;
end;
end;
注意:如果使用关闭按钮关闭对话框,则会在 ModalResult 属性中返回mrCancel
值。