Як повністю очистити таблицю 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:

В осередках стовпців фіксованою зони таблиці 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, залишивши недоторканими всі осередки фіксованої зони таблиці.