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
,