FireUI 的 TStringGrid - 在绘制时设置值
FireUI's TStringGrid - set the values as it paints
我对 Delphi XE7 的 FireMonkey TStringGrid 的使用使其拥有一百万行。用数百万个字符串填充 TStringGrid 的内容会消耗太多内存。
如何在绘制时设置单元格的值?
当单元格滚动到视图中时,我的代码会从一个巨大的临时文件中填充单元格的内容。
我的应用程序旧版本中的 TurboPower Orpheus TOvcTable 组件使用名为 OnGetCellData() 的挂钩执行此操作。我在 FireUI 的 TStringGrid 中没有看到类似的东西。
而不是 TStringGrid
使用 TGrid
和 TColumn
列。然后使用 OnGetValue
事件获取要在网格中显示的值。这最接近 VCL
s TDrawGrid
.
procedure TForm1.Grid1GetValue(Sender: TObject; const Col, Row: Integer;
var Value: TValue);
begin
Value := inttostr(col)+', '+inttostr(row);
end;
具有 10 mio 行的网格示例结果:
我对 Delphi XE7 的 FireMonkey TStringGrid 的使用使其拥有一百万行。用数百万个字符串填充 TStringGrid 的内容会消耗太多内存。
如何在绘制时设置单元格的值?
当单元格滚动到视图中时,我的代码会从一个巨大的临时文件中填充单元格的内容。
我的应用程序旧版本中的 TurboPower Orpheus TOvcTable 组件使用名为 OnGetCellData() 的挂钩执行此操作。我在 FireUI 的 TStringGrid 中没有看到类似的东西。
而不是 TStringGrid
使用 TGrid
和 TColumn
列。然后使用 OnGetValue
事件获取要在网格中显示的值。这最接近 VCL
s TDrawGrid
.
procedure TForm1.Grid1GetValue(Sender: TObject; const Col, Row: Integer;
var Value: TValue);
begin
Value := inttostr(col)+', '+inttostr(row);
end;
具有 10 mio 行的网格示例结果: