Pau*_*nes 3 memory delphi grid
在Delphi中,是否有一种快速清空TStringgrid(包含超过5000行)的方法,它还可以释放内存?
将rowcount设置为1,清空网格但不释放内存.
提前致谢,
保罗
TLa*_*ama 11
这应该取消初始化分配的字符串(从存储行文本的字符串列表).清理由列完成,因为您有很多行.
procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to StringGrid1.ColCount - 1 do
StringGrid1.Cols[I].Clear;
StringGrid1.RowCount := 1;
end;
Run Code Online (Sandbox Code Playgroud)
“不释放内存”是指如果先设置RowCount := 1,然后再设置RowCount := 10' you can still see the old content of theCells`?
如果是这样,这是一个老问题,与未释放内存无关;这仅仅是因为您在再次分配内存时碰巧看到了内存的先前内容,因为内存没有被清零。
我在一个实用程序单元中有一个非常标准的例程来处理这个视觉故障,除非网格很大,否则工作速度足够快。只需TStringGrid 在将RowCount或更改ColCount为较低值之前传递。
procedure ClearStringGrid(const Grid: TStringGrid);
var
c, r: Integer;
begin
for c := 0 to Pred(Grid.ColCount) do
for r := 0 to Pred(Grid.RowCount) do
Grid.Cells[c, r] := '';
end;
Run Code Online (Sandbox Code Playgroud)
像这样使用它:
ClearStringGrid(StringGrid1);
StringGrid1.RowCount := 1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16645 次 |
| 最近记录: |