Bloquear edição em coluna de DBGrid

Delphi

SQLite

22/12/2020

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

Curtidas 0

Melhor post

Emerson Nascimento

Emerson Nascimento

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.


GOSTEI 1

Mais Respostas

Ramboli

Ramboli

22/12/2020

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
GOSTEI 0
Ramboli

Ramboli

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.



Obrigado amigo, deu certo aqui
GOSTEI 0
POSTAR