Não é a linguagem de programação que define o programador, mas sim sua lógica

Como congelar uma coluna do TDBGrid


Normalmente quando deixo algum campo em edição de um grid eu congelo os outros, não em todos os caso pois em alguns um simples readonly resolve, mas e para aqueles casos que não se pode mexer na colunas? Então temos que fazer o congelamento delas para se apenas alterado determinadas colunas.



type
  THack = class(TDBGrid);
  TFTabOrder = class(TForm)
end;

procedure TFTabOrder.DBGrid1ColEnter(Sender: TObject);
begin
  if (THack(DBGrid1).SelectedIndex = 0) then begin
    THack(DBGrid1).LeftCol := 2;
    THack(DBGrid1).SelectedIndex := 1;
  end;
end;

procedure TFTabOrder.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (Key = VK_Left) and (THack(DBGrid1).SelectedIndex = 1) then
    Key := VK_Clear;
end;

procedure TFTabOrder.DoCreate;
begin
  inherited;
  THack(DBGrid1).Columns[0].ReadOnly := True;
  THack(DBGrid1).FixedCols := 4;
end;

0 comentários:

Postar um comentário