Delphi FMX TIntegerColumn SetValue: неверный тип - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть 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, ни данных пользователя.

...