Quando o usuário está editando dados em um dbGrid, ele sempre espera que ao se pressionar a tecla "ENTER", a ação seja mudar para a célula seguinte (a da direita), mas o dbGrid não tem esse comportamento por padrão.
Pensando nisso, elaborei uma rotina, que deverá ser escrita no evento OnKeyUp do dbgrid. Sempre que se atinge a última célula em uma linha, automaticamente ele passa para a linha seguinte e, se estiver na última, uma nova será inserida.
Segue a rotina:
if Key = #13 then
begin
if dbgrid.SelectedIndex = dbgrid.Columns.Count - 1 then
//verifica se e a ultima celula
begin
if DatasetConectadoNoGrid.Eof then
DatasetConectadoNoGrid.Insert
else
DatasetConectadoNoGrid.Next;
//se for o ultimo registro insere um novo,
//caso contrario ele passa para o proximo
registro
dbgrid.SelectedIndex := 0;
//Posiciona na primeira celula
end
else
dbgrid.SelectedIndex := dbgrid.SelectedIndex + 1;
//Se nao estive na ultima celula passa a proxima
end;
Como sempre, em caso de dúvidas, escrevam.
--
Fernando D. Nappe
Analista de Sistemas
Um comentário:
Show de Bola! Fazia um tempão que precisava dessa funcionalidade...value!!
Postar um comentário