代码之家  ›  专栏  ›  技术社区  ›  Andreas Rejbrand

如何在Delphi TTaskDialog中验证复选框是否选中?

  •  5
  • Andreas Rejbrand  · 技术社区  · 14 年前

    not so good documentation .. 在一个 TTaskDialog ,您可以选择添加一个复选框。您可以通过 tfVerificationFlagChecked 标志进入 Flags Execute d?

    当然可以使用 OnVerificationClicked 事件并在每次调用时切换一个局部变量,该变量最初等于复选框的初始状态。但人们期待一个更自然的解决方案。

    3 回复  |  直到 13 年前
        1
  •  9
  •   Andreas Rejbrand    14 年前

    哦,我的上帝,恩巴卡德罗犯了个错误。

    我的一些测试表明,如果最初没有选中复选框,但是用户选中了,那么 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;
    

    请注意,如果在对话框关闭时选中了复选框,则会包含该标志,但如果用户未选中该复选框,则不会有代码删除该标志。

    当然,我们希望代码的后一部分已经读过了

      if LVerificationChecked then
        Include(FFlags, tfVerificationFlagChecked)
      else
        Exclude(FFlags, tfVerificationFlagChecked)
    

    我想我会同意的 OnVerificationClicked 手动切换方法。

        2
  •  2
  •   Rob Kennedy    14 年前

    你不识字吗 Flags 关闭对话框后,查看 tfVerificationFlagChecked 还存在吗?

        3
  •  1
  •   artuzai    10 年前

    在delphixe7中(也可能是更早的版本),这个问题似乎已经解决了。

    choice := tfVerificationFlagChecked in tskbox.Flags;
    

    choice是一个布尔变量,可以返回checked状态。

    推荐文章