Skip to content

DBGrid, hacer funcionar Intro como Tab

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;