...Insert/Delete a row in a TStringGrid?

Author: Thomas Stutz

Category: VCL

// For this tip you need a StringGrid1 and a Button1.
// Für diesen Tip braucht man ein StringGrid1 und einen Button1.


{...}
type
  
TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    
{...}
  
public
    
{...}
  
end;

type
  
TStringGridHack = class(TStringGrid)
  protected
    procedure 
DeleteRow(ARow: Longint); reintroduce;
    procedure InsertRow(ARow: Longint);
  end;

var
  
Form1: TForm1;

implementation

{$R *.DFM}

procedure TStringGridHack.DeleteRow(ARow: Longint);
var
  
GemRow: Integer;
begin
  
GemRow := Row;
  if RowCount > FixedRows + 1 then
    inherited 
DeleteRow(ARow)
  else
    
Rows[ARow].Clear;
  if GemRow < RowCount then Row := GemRow;
end;

procedure TStringGridHack.InsertRow(ARow: Longint);
var
  
GemRow: Integer;
begin
  
GemRow := Row;
  while ARow < FixedRows do Inc(ARow);
  RowCount := RowCount + 1;
  MoveRow(RowCount - 1, ARow);
  Row := GemRow;
  Rows[Row].Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  
// Insert Row, Zeile hinzufügen
  
TStringGridHack(StringGrid1).InsertRow(1);
  // Remove Row, Zeile entfernen
  
TStringGridHack(StringGrid1).DeleteRow(2);
end;

end.

 

printed from
www.swissdelphicenter.ch
developers knowledge base