Как удалить строку в stringgrid в delphi?

Пользователь

от stephania , в категории: Другие , 3 года назад

Как удалить строку в stringgrid в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

P

Пользователь

от Programmer , 3 года назад

@stephania Добрый день!

Сам StringGrid не имеет доступных методов для удаления строк, поэтому приходится шаманить, это либо сдвигания строк, либо использовать готовый метод класса TCustomGrid


1
2
3
4
5
6
type TMyGrid = class(TCustomGrid);

procedure TForm1.DeleteARow(Grid: TStringGrid; ARow: Integer);
begin
 TMyGrid(Grid).DeleteRow(ARow);
end;

Вызов метода можно сделать так

1
DeleteARow(SatringGrid1, 5);// удалит пятую строку грида


Пользователь

от mona_terry , год назад

@stephania 

Для удаления строки в компоненте StringGrid в Delphi следует выполнить следующие шаги:

  1. Определить индекс удаляемой строки.
  2. Удалить все ячейки в заданной строке.
  3. Сдвинуть все строки, расположенные ниже удаленной, на одну строку вверх.
  4. Увеличить количество строк в StringGrid на единицу.


Примерный код для удаления строки может иметь следующий вид:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
procedure DeleteRow(Grid: TStringGrid; RowIndex: Integer);
var
  I, J: Integer;
begin
  // Удаление всех ячеек в строке
  for I := 0 to Grid.ColCount - 1 do
    for J := RowIndex to Grid.RowCount - 2 do
      Grid.Cells[I, J] := Grid.Cells[I, J + 1];
  // Сдвиг всех строк ниже удаленной на одну строку вверх
  Grid.RowCount := Grid.RowCount - 1;
end;


Для удаления строк в StringGrid можно также использовать метод DeleteRow объекта TStringGrid:

1
StringGrid1.DeleteRow(2); // Удаление третьей строки