Bloquear edição em coluna de DBGrid

22/12/2020

0

Olá, estou precisando bloquear a edição em uma coluna especifica do DBGrid, Fiz assim no OnCellClick:

if ((RzDBGrid1.SelectedIndex = 0) or (RzDBGrid1.SelectedIndex = 1)) then
    begin
      RzDBGrid1.ReadOnly := True;
      raise Exception.Create('Não é permitido a alteração!');
    end
    else
      RzDBGrid1.ReadOnly := False;


Porem ele desativa toda a grid, e so volta a funcionar caso eu clique com o mouse em uma coluna que não seja a 0 ou a 1, mudar a celula com o TAB ou o ENTER não reabilita a grid, tentei fazer o mesmo codigo no OnExit, porem não avança de celula dai, alguem ai consegue me dar uma luz?
Deste já agradeço
Ramboli

Ramboli

Responder

Post mais votado

22/12/2020

veja se a propriedade ReadOnly existe na coluna:
RzDBGrid1.Columns[1].ReadOnly

ou mesmo no dataset:
dataset.fieldbyname('xxxxx').ReadOnly := .T.
também pode ser feito diretamente do FieldsEditor.


Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

22/12/2020

Ramboli

Olá, estou precisando bloquear a edição em uma coluna especifica do DBGrid, Fiz assim no OnCellClick:

if ((RzDBGrid1.SelectedIndex = 0) or (RzDBGrid1.SelectedIndex = 1)) then
    begin
      RzDBGrid1.ReadOnly := True;
      raise Exception.Create('Não é permitido a alteração!');
    end
    else
      RzDBGrid1.ReadOnly := False;


Porem ele desativa toda a grid, e so volta a funcionar caso eu clique com o mouse em uma coluna que não seja a 0 ou a 1, mudar a celula com o TAB ou o ENTER não reabilita a grid, tentei fazer o mesmo codigo no OnExit, porem não avança de celula dai, alguem ai consegue me dar uma luz?
Deste já agradeço


Esqueçe, surgiu uma luz aqui, mudei o codigo para:

if ((RzDBGrid1.SelectedIndex = 0) or (RzDBGrid1.SelectedIndex = 1)) then
    begin
      RzDBGrid1.SelectedIndex := 2;
      raise Exception.Create('Não é permitido a alteração!');
    end
    else
      RzDBGrid1.ReadOnly := False;


Abraço
Responder

22/12/2020

Ramboli

veja se a propriedade ReadOnly existe na coluna:
RzDBGrid1.Columns[1].ReadOnly

ou mesmo no dataset:
dataset.fieldbyname('xxxxx').ReadOnly := .T.
também pode ser feito diretamente do FieldsEditor.



Obrigado amigo, deu certo aqui
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar