Удаление колонки в StringGrid

Материал из DRKB

Удаление колонки в StringGrid[править | править код]

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;


ID: 00600



procedure RemoveColumn(SG: TStringGrid; ColNumber: integer); 
var
  Column: integer; 
begin 
  ColNumber := abs(ColNumber); 

  if ColNumber <= SG.ColCount then
  begin 
    for Column := ColNumber to SG.ColCount - 2 do
    begin 
      SG.Cols[Column].Assign(SG.Cols[Column + 1]); 
      SG.Colwidths[Column] := SG.Colwidths[Column + 1]; 
    end; 
    SG.ColCount := SG.ColCount - 1; 
  end; 
end;


procedure TForm1.Button3Click(Sender: TObject);
var
  i, j: Integer;
begin
  j := SG1.Row; // строка с выделением
  SG1.Rows[j].Clear;
  for i := j to SG1.RowCount-2 do
    SG1.Rows[i].Assign(SG1.Rows[i+1]);
  SG1.RowCount := SG1.RowCount-1;
end;


Source: http://delphiworld.narod.ru/
ID: 01047



type
  TStringGridHack = class(TStringGrid)
  public
    procedure DeleteCol(ACol: Longint);
  end;

var
  Form1: TForm1;

implementation

procedure TStringGridHack.DeleteCol(ACol: Longint);
begin
  if ACol = FixedCols then if ACol = (ColCount - 1) then
    begin
      Cols[ACol].Clear;
      if ColCount(FixedCols + 1) then ColCount := (ColCount - 1);
    end
    else
    begin
      Cols[ACol] := Cols[ACol + 1];
      DeleteCol(ACol + 1);
    end;
end;


Source: http://delphiworld.narod.ru/
ID: 01048