Автор: Dennis Passmore

  

Поскольку свойство Cols[x] компонента TStringGrid реально является компонентом TStrings, все методы TStrings применимы также и к Cols[x].

 

Недавно в интернете я нашел реализацию расширенных функций TStringGrid:

 

Code:

procedure SGInsertRow(SG: TStringGrid; NewRow: Integer);

var

i: Integer;

begin

if NewRow < 0 then

   NewRow := 0; // либо 1, задайте нужное вам поведение

with SG do

begin

   RowCount := RowCount + 1;

   if NewRow < RowCount - 1 then

   begin

     for i := RowCount - 1 downto NewRow + 1 do

       Rows[i].Assign(Rows[i - 1]);

   end;

   Rows[NewRow].Clear;

end;

end;

 

 

Code:

procedure TForm1.Button1Click(Sender: TObject);

var

  i, k: Integer;

begin

  with StringGrid1 do

    for i := 0 to ColCount - 1 do

      for k := 0 to RowCount - 1 do

        Cells[i, k] := '';

end;

 

Code:

Procedure GridAddColumn(StrGrid: TStringGrid; NewColumn: Integer);

Var Column: Integer;

begin

StrGrid.ColCount := StrGrid.ColCount+1;

For Column := StrGrid.ColCount-1 downto NewColumn do

   StrGrid.Cols[Column].Assign(StrGrid.Cols[Column-1]);

StrGrid.Cols[NewColumn-1].Text := '';

end;

 

Code:

Procedure GridRemoveColumn(StrGrid: TStringGrid; DelColumn: Integer);

Var Column: Integer;

begin

If DelColumn <= StrGrid.ColCount then

Begin

   For Column := DelColumn To StrGrid.ColCount-1 do

     StrGrid.Cols[Column-1].Assign(StrGrid.Cols[Column]);

   StrGrid.ColCount := StrGrid.ColCount-1;

End;

end;

 

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

Автор: Song

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

Code:

Type TFakeGrid=class(TCustomGrid);

{©Drkb v.3(2007): www.drkb.ru,

®Vit (Vitaly Nevzorov) - Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.}

 

procedure TForm1.MyDelete(Sender: TObject);

begin

TFakeGrid(Grid).DeleteRow(Grid.row);

end;