And*_*and 5 delphi ttaskdialog tcheckbox
好吧,这应该很简单,但我找不到解决方案,至少在不太好的文档中没有找到.在a中TTaskDialog,你可以选择添加一个复选框.您可以通过tfVerificationFlagChecked标志来控制其初始状态Flags.但是如何在对话框结束后获得状态Execute?
当然,可以OnVerificationClicked在每次调用时使用事件并切换一个局部变量,最初等于复选框的初始状态.但人们会期待更自然的解决方案.
我的天啊,Embarcadero犯了一个错误.
我的一些测试显示,如果最初未选中复选框,但是用户检查了该复选框,则将tfVerificationFlagChecked设置该标志.但是如果初始设置了标志,并且用户取消选中该框,则tfVerificationFlagChecked不会从该Flags集中删除该标志.这并不奇怪.VCL代码可以
Result := TaskDialogIndirect(LTaskDialog, {$IFNDEF CLR}@{$ENDIF}LModalResult,
{$IFNDEF CLR}@{$ENDIF}LRadioButton, {$IFNDEF CLR}@{$ENDIF}LVerificationChecked) = S_OK;
FModalResult := LModalResult;
if Result then
begin
FButton := TTaskDialogButtonItem(FButtons.FindButton(FModalResult));
FRadioButton := TTaskDialogRadioButtonItem(FRadioButtons.FindButton(LRadioButton));
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked);
end;
Run Code Online (Sandbox Code Playgroud)
请注意,如果在对话框关闭时选中该复选框,则会包含该标志,但如果用户取消选中该框,则没有代码可以删除该标志.
当然,人们会期望代码的后半部分已经阅读过
if LVerificationChecked then
Include(FFlags, tfVerificationFlagChecked)
else
Exclude(FFlags, tfVerificationFlagChecked)
Run Code Online (Sandbox Code Playgroud)
我想我会选择OnVerificationClicked手动切换方法.
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |