Компонент Delphi StringGrid









                                           ГЛАВНАЯ           СВОЙСТВА           СОБЫТИЯ           ПРИЁМЫ  ПРОГРАММИРОВАНИЯ



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

    Сайт из коллекции Компоненты Delphi    

    Карта сайта