delphi - 如何处理大型字符串网格?

标签 delphi

我发现我可能必须使用少于 10 列但大约 50k 行的字符串网格。

实验表明它对 CPU 的 react 非常迟钝。

有什么指点吗?

代码还是组件?

最好是 Delphi (7) 内置或 TMS(我有许可证)或 FOSS(用于商业用途)。

<小时/>

更新:请不要只告诉我使用虚拟 TreeView 等。请告诉我为什么,以便我可以学到一些东西。谢谢。

最佳答案

我不认为问题来自于将此数字添加到 TStringGrid。

添加 100k 行只需不到 1 秒(700 毫秒)(不是高端 PC,只是双核)。

procedure TForm1.btn1Click(Sender: TObject);
Const
  arr : array[1..5] of string = ('One','Two','Three','Four','Five');
  Rows = 100000;
var
  I: Integer;
  F,E : Integer;
begin
  StringGrid1.RowCount := Rows;
  F := GetTickCount;
  for I := 0 to Rows do
  begin
    StringGrid1.Cells[1,I] := Arr[1] + IntToStr(I);
    StringGrid1.Cells[2,I] := Arr[2]+ IntToStr(I);
    StringGrid1.Cells[3,I] := Arr[3]+ IntToStr(I);
    StringGrid1.Cells[4,I] := Arr[4]+ IntToStr(I);
    StringGrid1.Cells[5,I] := Arr[5]+ IntToStr(I);
  end;
  E := GetTickCount;
  ShowMessage(Inttostr(E-F));
end;

我认为你的代码很慢,你从数据库中获取数据吗?如果是这样,这将是您代码的瓶颈,还会向任何网格添加 50k 来向用户显示,称为“不好的做法”

如果不显示任何代码,很难告诉您为什么速度很慢。

关于delphi - 如何处理大型字符串网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600168/

相关文章:

sql - 如何在 Delphi 中查找与特定格式匹配的 Access 数据库中所有表的列表

通过 FinalBuilder 上的 TestComplete 7 进行 Delphi 项目测试

delphi - 为什么 Delphi 编译器看不到我正在尝试释放接口(interface)?

arrays - 访问内部数组的元素

delphi - 检查TEdit的Text属性在框架上是否为空

delphi - 是否可以拍摄数据集的快照?

delphi - 为什么在 Delphi 2010 中将 SSl 添加到 Indy 邮政编码查找示例时得到 "wrong version error"?

android - Delphi for Android 的 VCL

delphi - 在 C++ Builder 中启用安全异常处理

delphi - TPageControl 选项卡区域 OnMouseEnter OnMouseLeave 事件