TCheckBox.Data недопустимый тип при использовании в качестве TValue

Действия по воспроизведению:

-новое приложение firemonkey

-добавить 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.data, даже если это тоже TValue, выдает ошибку EInvalidCast при вызове AsInteger, Та же ошибка появляется при использовании checkbox1.data.AsType<Integer> вместо.

Я неправильно использую TCheckBox.Data здесь или это какая-то ошибка?

1 ответ

Решение

TCheckBox.Data содержит boolean значение, в частности, флажок проверяется состояние. Вот почему вы получаете EInvalidCast ошибка при попытке прочитать Integer от него.

Причину, по-видимому, вы можете поставить Integer данные, потому что TCheckBox.SetData будет просто игнорировать недопустимые типы данных и наборы Data в False,

Другие вопросы по тегам