如何验证是否在Delphi TTaskDialog中选中了复选框?
发布时间:2020-12-15 04:18:09 所属栏目:大数据 来源:网络整理
导读:好的,这应该很简单,但我找不到解决方案,至少在 not so good documentation中没有.在TTaskDialog中,您可以选择添加一个复选框.您可以通过Flags中的tfVerificationFlagChecked标志来控制其初始状态.但是如何在执行对话后获取状态? 当然,可以使用OnVerificatio
好的,这应该很简单,但我找不到解决方案,至少在
not so good documentation中没有.在TTaskDialog中,您可以选择添加一个复选框.您可以通过Flags中的tfVerificationFlagChecked标志来控制其初始状态.但是如何在执行对话后获取状态?
当然,可以使用OnVerificationClicked事件并在每次调用时切换一个局部变量,最初等于复选框的初始状态.但人们会期待更自然的解决方案. 解决方法
我的天啊,Embarcadero犯了一个错误.
我的一些测试显示,如果最初未选中复选框,但用户已检查,则将设置tfVerificationFlagChecked标志.但是如果初始设置了标志,并且用户取消选中该框,则不会从标志集中删除tfVerificationFlagChecked.这并不奇怪. 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; 请注意,如果在对话框关闭时选中该复选框,则会包含该标志,但如果用户取消选中该框,则没有代码可以删除该标志. 当然,人们会期望代码的后半部分已经阅读过 if LVerificationChecked then Include(FFlags,tfVerificationFlagChecked) else Exclude(FFlags,tfVerificationFlagChecked) 我想我会选择OnVerificationClicked手动切换方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |