Fórum Alterar apenas um campo do DBGrid #443136

16/05/2013

0

Bom dia pessoal, gostaria de deixar alterar um campo somente de uma tabela temporária exibida no DBGrid. Por exemplo:

O Grid está assim:

0 - Action
1 - Action_Nome
2 - Permissao

Gostaria de poder editar apenas o campo Permissao, seria assim:

if DBGrid1.SelectedIndex=6 then // Aqui mudaria para 2 e colocaria isso no OnColEnter
    DBGrid1.Options := DBGrid1.Options - [dgEditing] 
  else 
    DBGrid1.Options := DBGrid1.Options + [dgEditing];
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

16/05/2013

Frederico Brigatte***

Eu fiz assim:

procedure TfrmAcesso.DBGrid3ColEnter(Sender: TObject);
begin
  if DBGrid3.SelectedIndex=2 then
  begin
    DBGrid3.Options := DBGrid1.Options + [dgEditing]
  end
  else
  begin
    DBGrid3.Options := DBGrid1.Options - [dgEditing];
    showMessage('Campo não permitido para edição');
  end;
end;


A primeira coluna está deixando editar. O que está errado?
Responder

Gostei + 0

18/05/2013

Frederico Brigatte***

Ninguém?
Responder

Gostei + 0

20/05/2013

Thiago Santos

Já tentou usar tipo:
DBGrid1.Columns[0].ReadOnly := True;
Responder

Gostei + 0

20/05/2013

Frederico Brigatte***

Não, coloco no evento OnColEnter do Grid, pode ser?
Responder

Gostei + 0

20/05/2013

Thiago Santos

Um exemplo se fosse no OnColEnter:

var
  iColuna: Integer;
begin

    // Índice da coluna
    iColuna := 0;
    // Apenas modo leitura na iColuna
    DBGrid1.Columns[iColuna].ReadOnly := DBGrid1.SelectedIndex = iColuna;
    // Mensagem de alerta
    if DBGrid1.Columns[iColuna].ReadOnly then
      MessageDlg('Coluna não permitida para edição.',mtWarning,[mbOK],0);

end;
Responder

Gostei + 0

20/05/2013

Thiago Santos

Mas eu acho que fica melhor no OnCellClick. Apenas uma sugestão.

procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  iColuna: Integer;
begin

    // Índice da coluna
    iColuna := 0;
    // Apenas modo leitura na iColuna
    DBGrid1.Columns[iColuna].ReadOnly := DBGrid1.SelectedIndex = iColuna;
    // Mensagem de alerta
    if DBGrid1.Columns[iColuna].ReadOnly then
      MessageDlg('Campo não permitido para edição.',mtWarning,[mbOK],0);

end;
Responder

Gostei + 0

20/05/2013

Frederico Brigatte***

Ok, o indice seria a coluna que quero travar, né?
Responder

Gostei + 0

21/05/2013

Thiago Santos

Sim.
Responder

Gostei + 0

21/05/2013

Frederico Brigatte***

Ok, obrigado. Vou implementar isso e testar.
Responder

Gostei + 0

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

Aceitar