我发现我可能不得不使用少于10列的字符串网格,但大约有5万行。
实验表明它是一个非常反应迟钝的CPU。
任何指针?
代码或组件?
最好是Delphi(7)内置或TMS(我有许可证)或FOSS(用于商业用途)。
更新:请不要只是告诉我使用虚拟树视图等。请告诉我原因,以便我可以学到一些东西。感谢。
答案 0 :(得分:5)
经常推荐虚拟模式下的TListView组件(我自己没试过,但听起来很容易实现)
答案 1 :(得分:5)
我认为问题不在于将此数字添加到TStringGrid。
添加10万行只需不到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;
我认为您的代码速度慢,是否从数据库中提取数据?如果是这样,这将是您的代码的瓶颈,也为WHATEVER GRID添加50k,以便为名为“不良做法”的用户显示。
如果没有显示任何代码,很难告诉你为什么这么慢。
答案 2 :(得分:4)
如果您对虚拟树视图感兴趣,则应从http://code.google.com/p/virtual-treeview/source/checkout签出整个虚拟树视图中继。您将找到Demos \ Advanced子目录,其中Demo应用程序显示虚拟树视图功能,例如如何将虚拟树视图用作网格。
你需要SVN来检查来自googlecode的代码。如果您从未使用过SVN下载并安装TortoiseSVN
答案 3 :(得分:3)
您可能需要查看针对高容量构建的Virtual Treeview: http://www.delphi-gems.com/index.php?option=com_content&task=view&id=12&Itemid=38