Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Tecla Enter (https://www.clubdelphi.com/foros/showthread.php?t=71012)

kokele 24-11-2010 17:20:12

Tecla Enter
 
Hola a todo el foro.

Estoy haciendo unos forms con base de datos y utilizo el componente tdbedit. Mi pregunta es la siguiente:
¿Al igual que pulso el tabulador para pasar a cada componte tdbedit, se puede utilizar intro sin tener que programarlo o hay que programarlo?

Nota: De momento lo estoy poniendo en el evento onkeydown que me pase al siguiente tdbedit al pulsar intro.

saludos
kokele

ContraVeneno 24-11-2010 17:26:44

¿OnKeyDown de dónde, de cada componente?

Por que lo podrías programar en el formulario, una sola vez, algo así como 3 líneas de código te darían esa funcionalidad en todo tu formulario...

cloayza 24-11-2010 21:27:51

Podrias hacer lo siguiente

Código Delphi [-]
procedure TForm1.DBEdit1KeyPress(var Key: Char);
begin
     if (key = #13) then
      begin
          PostMessage(GetparentForm(Self).Handle, WM_NEXTDLGCTL ,0,0);
          Key := #0;
          Exit;
      end;
end;

Lo que debes hacer a continuacion es asociar este evento a todos los DBEdit...

Saludos

ecfisa 24-11-2010 21:38:10

Hola.

Otra posible solución es:
Código Delphi [-]
procedure TForm1.DBEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
    Perform(WM_NEXTDLGCTL ,0,0);
end;

Saludos. :)

ecfisa 24-11-2010 22:47:39

Me quede pensando y creo que la sugerencia de ContraVeneno, de capturar la tecla en el form te sirve para qualquier componente.
Así que podrías poner la propiedad KeyPreview del form a True y este código en el evento OnKeyPress del form:

Código Delphi [-]
...
  if Key = #13 then
  begin
     Perform(WM_NEXTDLGCTL ,0,0);
     Key:= #0;
  end;
...

Tené en cuenta que puede cambiar el comportamiento normal de algunos componentes como por ejemplo el TStringGrid...

Saludos. :)

ContraVeneno 24-11-2010 23:38:24

Cita:

Empezado por ecfisa (Mensaje 383186)
...
Tené en cuenta que puede cambiar el comportamiento normal de algunos componentes como por ejemplo el TStringGrid...

Saludos. :)

Cuando empezamos a ver como "cambia el comportamiento normal de algunos componentes", es cuando empieza a NO gustarme que se muevan con el enter...

Yo prefiero seguir con funcionalidad del sistema operativo... el cuál, NO se mueve al siguiente control con la tecla enter... "oye..." - diran algunos -..." pero el excel se mueve con el enter..." si amigo, pero excel es una tabla, grilla, grid...

diran otros: "es que es más rápido con el enter....", a caray... si me muestras un estudio científico dónde se demuestre que existe una diferencia considerable entre presionar "Enter" y presionar "Tab", empezaré a considerar esta acción como buena. No hay que confundir "la costumbre" con "la facilidad" o "la funcionalidad"...

En fin, yo prefiero seguir haciendo lo que hace el sistema operativo... el enter NO mueve al siguiente control.

rgstuamigo 24-11-2010 23:56:51

Existe muchas referencias para hacer que la tecla "Enter" funcione como "Tab" ;)por ejemplo mira éstas:
http://www.trucomania.org/trucomania/truco.cgi?1&esp
http://www.clubdelphi.com/foros/showthread.php?t=64992
y muchos más...;)
Saludos...:)

kokele 25-11-2010 12:00:57

Gracias a todos por las respuestas, me habeis aclarado el tema.

Saludos,
kokele


La franja horaria es GMT +2. Ahora son las 13:42:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi