DBGrid, Pasar al siguiente control al presionar la tecla Intro
Sabemos que, generalmente, al presionar la tecla Tab se mueve el foco al siguiente control y con Shift + Tab al anterior en el orden de tabulación del formulario. Al trabajar con aplicaciones de Windows , algunos usuarios intuitivamente esperan que la tecla Intro se comporte como una tecla Tab.
Existe una gran cantidad de código de terceros para implementar un mejor procesamiento en la entrada de datos en Delphi. Estos es uno de los mejores métodos disponibles (con algunas modificaciones).
El ejemplo siguiente se escribió asumiendo que no existe un botón predeterminado en el formulario. Cuando su formulario contiene un botón cuya propiedad Default se establece en True, al presionar Intro en tiempo de ejecución, se ejecuta cualquier código contenido en el controlador de eventos OnClick de ese botón.
Intro como Tab en DBGrid
El siguiente código hace que al presionar Intro se comporte como Tab y Shift + Intro como Shift + Tab:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then // Si presionamos Intro
Begin
if HiWord(GetKeyState(VK_SHIFT)) <> 0 then // Si esta presionado Shift
begin
with (Sender as TDBGrid) do
begin
if selectedindex > 0 then
selectedindex := selectedindex - 1;
else
begin
DataSource.DataSet.Prior;
selectedindex := fieldcount - 1;
end;
end;
end
else // Si no esta presionado Shift
begin
with (Sender as TDBGrid) do
if selectedindex < (fieldcount - 1) then
selectedindex := selectedindex + 1
else
begin
DataSource.DataSet.Next;
selectedindex := 0;
end;
end;
Key := #0
end;
end;