Grid的TCheckColumn不适用于Delphi 10.1 Berlin firemonkey应用程序

时间:2016-08-08 16:52:20

标签: delphi firemonkey delphi-10.1-berlin

我们正在将我们的应用程序从XE6迁移到10.1柏林,我们的自定义网格样式无法正常工作。在我测试时,我回到XE6来查看默认的gridstyle&使用TCheckcolumn时checkcellstyle,它工作正常。然后我去了10.1柏林,并在使用TCheckcolumn时测试了默认的gridstyle和checkcellstyle,但它不起作用。即,除非您单击网格中的行,否则复选框不会显示....在显示之后,您无法选中或取消选中它。这是一个错误还是我们需要在10.1柏林做些什么呢?

1 个答案:

答案 0 :(得分:3)

XE6 FMX.Grid和Delphi 10.1 Berlin FMX.Grid之间的区别,特别是TCheckColumn,即使链接的TValueEmpty,在XE6中也可以看到复选框。这是直到D10西雅图的情况。在D10.1柏林,这已经更改,只有当链接的TValueFalseTrue时,复选框才可见。如果TValueEmpty,则不会显示该复选框。

在柏林D10.1中,以下测试(类似于文档示例)对我有用:

type
  TForm27 = class(TForm)
    Grid1: TGrid;
    Column1: TColumn;
    CheckColumn1: TCheckColumn;
    StringColumn1: TStringColumn;
    procedure Grid1GetValue(Sender: TObject; const ACol, ARow: Integer;
      var Value: TValue);
    procedure Grid1SetValue(Sender: TObject; const ACol, ARow: Integer;
      const Value: TValue);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    Arr: array of TValue;
  public
    { Public declarations }
  end;

implementation

procedure TForm27.FormCreate(Sender: TObject);
begin
  SetLength(Arr, Grid1.RowCount);
end;

procedure TForm27.Grid1GetValue(Sender: TObject; const ACol, ARow: Integer;
  var Value: TValue);
begin
  if ACol = 1 then
    Value := Arr[ARow];
end;

procedure TForm27.Grid1SetValue(Sender: TObject; const ACol, ARow: Integer;
  const Value: TValue);
begin
  if ACol = 1 then
   Arr[ARow] := Value.AsBoolean;
end;

在运行时它看起来像这样:

enter image description here

在这里,我访问了三行,并显示了复选框。

用于比较XE6测试;

enter image description here