Monday, September 12, 2011

Deletar linha ou coluna de um TStringGrid

Crie um form e adicione um StringGrid nele
adicione essa procedure no form

procedure ApagarLinhaColunaStringGrid(StringGrid: TStringGrid;
  LinhaOuColuna: boolean; Qual: integer);
var
  i: integer;
begin
  if LinhaOuColuna = True then
  begin
    for i := StringGrid.Row to StringGrid.RowCount - 1 do
    begin
      StringGrid.Rows[i] := StringGrid.Rows[i + 1];
    end;
    StringGrid.RowCount := StringGrid.RowCount - 1;
  end
  else
  begin
    for i := StringGrid.Col to StringGrid.ColCount - 1 do
    begin
      StringGrid.Cols[i] := StringGrid.Cols[i + 1];
    end;
    StringGrid.ColCount := StringGrid.ColCount - 1;
  end;
end;
No exemplo vamos usar o evento OnKeyDown do StringGrid
procedure Form1.StringGrid1.KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key = VK_DELETE then //Se a tecla for o delete então
begin
  ApagarLinhaColunaStringGrid(
"Seu StringGrid",
"True pra apagar linha, False pra apagar coluna",
"Numero da linha que voce quer apagar");
end;
end;