sexta-feira, outubro 27, 2006

Dica de Delphi - Mudando de célula com ENTER no dbGrid

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:

Anônimo disse...

Show de Bola! Fazia um tempão que precisava dessa funcionalidade...value!!