StringGrid Delphi
Как полностью очистить таблицу StringGrid
Необходимость очистить таблицу StringGrid часто возникает в процессе работы программы. Но, к сожалению, среди методов компонента StringGrid Delphi отсутствует метод полной очистки таблицы StringGrid от ранее размещённого в ячейках содержимого.
Следовательно, необходимо использовать последовательную программную очистку ячеек одну за другой, либо воспользоваться встроенными в компонент StringGrid методами очистки отдельных строк либо столбцов.
Компонент StringGrid состоит из таких объектов как столбцы:
StringGrid1.Cols[Index: Integer]: TStrings;
и строки:
StringGrid1.Rows[Index: Integer]: TStrings;
Эти объекты, в отличие от целой таблицы, имеют методы своей полной очистки:
//Очистка столбца с индексом i
StringGrid1.Cols[i].Clear;
//Очистка строки с индексом j
StringGrid1.Rows[j].Clear;
Используя эти методы, вот как производится полная очистка таблицы StringGrid:
procedure TForm1.ClearTable;
begin
with StringGrid1 do
for i:=0 to ColCount-1 do
Cols[i].Clear;
end;
В ячейках столбцов фиксированной зоны таблицы StringGrid часто содержатся наименования или номера строк. Если необходимо их сохранить, то цикл нужно проводить не от 0, а от StringGrid1.FixedCols:
procedure TForm1.ClearTable;
begin
with StringGrid1 do
for i:=FixedCols to ColCount-1 do
Cols[i].Clear;
end;
Вышеприведённая процедура использует последовательную очистку столбцов. К тому же самому результату приведёт очистка строк:
procedure TForm1.ClearTable;
begin
with StringGrid1 do
for i:=0 to RowCount-1 do
Rows[i].Clear;
end;
Если необходимо сохранить содержимое ячеек строк фиксированной зоны, цикл нужно проводить не от 0, а от FixedRows.Если же необходимо очистить таблицу StringGrid, сохранив содержимое ячеек всей фиксированной зоны, как столбцов, так и строк, можно перед очисткой сохранить их содержимое, а затем вернуть на место. Либо просто очистить ячейки по одной, используя два вложенных цикла:
procedure TForm1.ClearTable;
var i, j: Integer;
begin
with StringGrid1 do
for i:=FixedCols to ColCount-1 do
for j:=FixedRows to RowCount-1 do
Cells[i, j]:='';
end;
Эта простая процедура очистит таблицу StringGrid, оставив нетронутыми все ячейки фиксированной зоны таблицы.Читайте также:
- Как закрасить одну ячейку StringGrid Delphi