Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как удалить строку из TStringGrid в runtime?

01.01.2007

Можно сделать наследника от TCustomGrid. А у последнего есть метод - DeleteRow.

Автор: Song

Взято с Vingrad.ru https://forum.vingrad.ru


Например удаление текущей строки:

Type TFakeGrid=class(TCustomGrid);

 
procedure TForm1.MyDelete(Sender: TObject);
begin
  TFakeGrid(Grid).DeleteRow(Grid.row);
end;

Автор: Vit

Взято с Vingrad.ru https://forum.vingrad.ru

Примечание от bur80 (Sources.ru):

Предлагаю в разделе VCL -> StringGrid внести корректировочку в статью "Как удалить строку в StringGrid в run-time", что данный метод(!) будет работать только в случае если форма создаётся вот так:

...
Form1.ShowModal;
...

 

а не так:

...
var
fr1 : TForm1;
begin
fr1 := Tform1.Create(Application);
fr1.Show;
...
 

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Удаление строки из StringGrid
 
Удаляет из StringGrid указанную строку, сдвигая остальные.
 
Зависимости: Grids
Автор:       Борис Новгородов (MBo), mbo@mail.ru, Новосибирск
Copyright:   MBo
Дата:        27 апреля 2002 г.
***************************************************** }
 
procedure SGDeleteRow(SG: TStringGrid; RowToDelete: Integer);
var
  i: Integer;
begin
  with SG do
  begin
    if (RowToDelete >= 0) and (RowToDelete < RowCount) then
    begin
      for i := RowToDelete to RowCount - 2 do
        Rows[i].Assign(Rows[i + 1]);
      RowCount := RowCount - 1;
    end;
  end;
end;
 
 


procedure GridDeleteRow(RowNumber: Integer; Grid: TstringGrid);
 var
   i: Integer;
 begin
   Grid.Row := RowNumber;
   if (Grid.Row = Grid.RowCount - 1) then
     { On the last row}
     Grid.RowCount := Grid.RowCount - 1
   else
   begin
     { Not the last row}
     for i := RowNumber to Grid.RowCount - 1 do
       Grid.Rows[i] := Grid.Rows[i + 1];
     Grid.RowCount := Grid.RowCount - 1;
   end;
 end;
 
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   GridDeleteRow(3, stringGrid1);
 end;

Взято с сайта: https://www.swissdelphicenter.ch