在Delphi XE2/XE3中执行以下代码
with TTaskDialog.Create(Self) do begin
try
if Execute then
ShowMessage('Success')
else
ShowMessage('Failed');
finally
Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
无论您点击什么按钮关闭对话框,显示的消息始终是Success.
写德尔福文档TTaskDialog.Execute作为
使用"执行"显示"任务"对话框.执行打开任务选择对话框,当用户选择任务并单击打开时返回true.如果用户单击"取消",则"执行"返回false.
RRU*_*RUZ 10
看来文档不正确,这是方法的执行流程TTaskDialog.Execute:
TTaskDialog.Execute - > TCustomTaskDialog.Execute - > TCustomTaskDialog.DoExecute - > TaskDialogIndirect = S_OK?
如您所见,仅当函数返回S_OK时,方法的结果才Execute为真TaskDialogIndirect.
要评估对话框的结果,必须使用该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;
Run Code Online (Sandbox Code Playgroud)
注意:如果使用关闭按钮关闭对话框,mrCancel则会在ModalResult属性中返回该值.