Под «не освобождает память», вы имеете в виду, что если вы установите RowCount := 1
, а затем установите RowCount := 10' you can still see the old content of the
Cells`?
Если это так, это старая проблема и не имеет ничего общего с не освобождаемой памятью;это просто потому, что вы просто видите предыдущее содержимое памяти, когда она снова выделяется, потому что память не обнуляется.
У меня есть довольно стандартная подпрограмма в служебной единице, которая имеет дело с этим визуаломсбой, и если сетка огромная работает достаточно быстро.Просто передайте 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;
Используйте его следующим образом:
ClearStringGrid(StringGrid1);
StringGrid1.RowCount := 1;