TCheckBox.作为TValue使用时,数据类型转换无效



复制步骤:

- firemonkey-application

-添加TCheckBox到表单

现在用下面的代码创建一个方法:

procedure TForm1.Foo;
var a,b:Integer; lVal:TValue;
begin
  lVal:=TValue.From<Integer>(42);
  a:=lVal.AsInteger;
  checkbox1.Data:=TValue.From<Integer>(42);
  b:=checkbox1.Data.AsInteger;
end;   

带lVal的强制转换没有问题,checkbox1。然而,即使它是一个TValue,抛出一个"EInvalidCast"-错误,当调用AsInteger。当使用checkbox1.data.AsType<Integer>时也会出现相同的错误。

我在这里滥用TCheckBox.Data还是这是某种bug?

TCheckBox.Data包含boolean值,具体为复选框勾选状态。这就是为什么当你试图从它读取Integer时,你会得到EInvalidCast错误。

看起来可以把Integer数据放进去的原因是因为TCheckBox.SetData会忽略无效的数据类型,并将Data设置为False

相关内容

  • 没有找到相关文章

最新更新