Alterar apenas um campo do DBGrid
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:
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***
Curtidas 0
Respostas
Frederico Brigatte***
16/05/2013
Eu fiz assim:
A primeira coluna está deixando editar. O que está errado?
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?
GOSTEI 0
Frederico Brigatte***
16/05/2013
Ninguém?
GOSTEI 0
Thiago Santos
16/05/2013
Já tentou usar tipo:
DBGrid1.Columns[0].ReadOnly := True;
GOSTEI 0
Frederico Brigatte***
16/05/2013
Não, coloco no evento OnColEnter do Grid, pode ser?
GOSTEI 0
Thiago Santos
16/05/2013
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;
GOSTEI 0
Thiago Santos
16/05/2013
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;
GOSTEI 0
Frederico Brigatte***
16/05/2013
Ok, o indice seria a coluna que quero travar, né?
GOSTEI 0
Thiago Santos
16/05/2013
Sim.
GOSTEI 0
Frederico Brigatte***
16/05/2013
Ok, obrigado. Vou implementar isso e testar.
GOSTEI 0