Sabemos que, en general, al presionar la tecla Tab se mueve el foco de entrada al siguiente control y 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 Enter se comporte como una tecla Tab.
Existe una gran cantidad de código de terceros para implementar un mejor procesamiento de entrada de datos en Delphi. Estos son algunos de los mejores métodos disponibles (con algunas modificaciones)..
Los ejemplos a continuación se escriben asumiendo que no hay un botón predeterminado en el formulario. Cuando su formulario contiene un botón cuya propiedad predeterminada está establecida en Verdadero, al presionar Entrar en el tiempo de ejecución se ejecuta cualquier código contenido en el controlador de eventos OnClick del botón.
El siguiente código hace que Enter se comporte como Tab y Shift + Enter como Shift + Tab:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedimiento TForm1.Edit1KeyPress (Remitente: TObject; var Key: Char);
empezar
Si la tecla = # 13, entonces comience
Si HiWord (GetKeyState (VK_SHIFT)) 0 entonces
SelectNext (remitente como TWinControl, False, True)
más
SelectNext (remitente como TWinControl, True, True);
Clave: = # 0
final;
final;
~~~~~~~~~~~~~~~~~~~~~~~~~
Si desea tener un procesamiento Enter (Shift + Enter) similar en DBGrid:
~~~~~~~~~~~~~~~~~~~~~~~~~
procedimiento TForm1.DBGrid1KeyPress (remitente: TObject; var Key: Char);
empezar
Si la tecla = # 13, entonces comience
Si HiWord (GetKeyState (VK_SHIFT)) 0 comienza entonces
con (Remitente como TDBGrid) hacer
si se selecciona índice> 0, entonces
selectedindex: = selectedindex - 1
de lo contrario comenzar
DataSource.DataSet.Prior;
índice seleccionado: = recuento de campos - 1;
final;
fin más comienza
con (Remitente como TDBGrid) hacer
si se selecciona índice < (fieldcount - 1) then
índice seleccionado: = índice seleccionado + 1
de lo contrario comenzar
DataSource.DataSet.Next;
índice seleccionado: = 0;
final;
final;
Clave: = # 0
final;
final;
~~~~~~~~~~~~~~~~~~~~~~~~~