Как удалить строку в StringGrid в run-time?

Previous  Top  Next

    
 

 

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

©Drkb::00591

Автор: Song

 

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

 

 

 


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

Code:

Type TFakeGrid=class(TCustomGrid);

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

®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}

 

procedure TForm1.MyDelete(Sender: TObject);

begin

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

end;

 

 

©Drkb::00592

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)

 

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

 

 

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

 

 

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

Code:

...

Form1.ShowModal;

...

 
а не так:

Code:

...

var

fr1 : TForm1;

begin

fr1 := Tform1.Create(Application);

fr1.Show;

...

 
©Drkb::00593


 

Code:

{ **** 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;

 

 

©Drkb::01049

 


 

Code:

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;

©Drkb::01050

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