У меня есть FMX TGrid со столбцом флажка, столбцом строки и столбцом целого числа.Мне удалось заставить столбец строки и столбцы флажка работать.Но когда я изменяю столбец целых чисел, TValue, переданное команде SetValue, кажется, не передает целое число.
Я настроил строковый столбец (StrNumber), чтобы делать то, что я хочу, но если япопробуйте обработать значение из IntegerColumn, я получаю ClassCastException.Я также пробовал различные типы чисел Value.AsBoolean, Value.AsString и т. Д., Но я всегда получаю неверный тип.
procedure MyApp.SuppGridSetValue(Sender: TObject; const ACol, ARow: Integer; const Value: TValue);
begin
if SuppGrid.Columns[ACol] = StrNumber then
Caption := IntToStr(StrToIntDef(Value.AsString,1));
else if SuppGrid.Columns[ACol] = Number then
Value.AsInteger; //see note
end;
ПРИМЕЧАНИЕ. В приведенном выше коде «Value.AsInteger» не будетпривыкнуть, даже если это сработало, но это наглядно демонстрирует, что проблема не в каком-то другом вызове, создающем ClassCastException.
При отладке окно проверки также не предлагает много.Похоже, что значение приходит как все 0 или ноль, независимо от того, что я пытаюсь установить его как.
(FData:(FTypeInfo:$4012BC; FValueData:TValueDataImpl($B7D78E8) as IValueData; FAsUByte:0; FAsUWord:0; FAsULong:0; FAsObject:nil; FAsClass:nil; FAsSByte:0; FAsSWord:0; FAsSLong:0; FAsSingle:0; FAsDouble:0; FAsExtended:0; FAsComp:0; FAsCurr:0; FAsUInt64:0; FAsSInt64:0; FAsMethod:(Code:nil; Data:nil); FAsPointer:nil))
То есть я пытался (в GetValue) установить прямой простойзначение:
Value := 42;
Также с использованием вызова From:
Value := TValue.From<Integer>(42); //doesn't work for an integer column
В этих случаях значение «42» отображается в правом столбце, но значение, переданное в процедуру SetValue, делаетПохоже, не имеют ни первоначального значения 42, ни данных пользователя.