PDA

Ver la Versión Completa : Saber cuando has pulsado Enter en un botón


diego11
07-12-2007, 13:18:37
Pues eso, estoy cambiando en mi formulario la tecla TAB por la tecla INTRO, pero al llegar a un botón, si pulsas la tecla INTRO no se lanza el evento KeyPress del formulario ni del botón. ¿Cómo puedo hacer para que al pulsar intro en un botón salte al siguiente control?

Un saludo y gracias anticipadas.

wofox
07-12-2007, 14:20:52
Pues simplemente en la opción Default del botón tienes que cambiarle a True.

Lepe
07-12-2007, 14:30:08
Ojalá funcione, pero quizás el método que usa para capturar la tecla INTRO por TAB tenga interferencias.

¿de qué manera cambias el intro por tab?
- Por codigo delphi puro y duro
- Usando el componente de la JVCL TJvEnterAsTab
- Usando otro componente de terceros.

Saludos

jhonny
07-12-2007, 14:30:50
No captures en <Enter> en el OnKeyPress, si no en el OnKeyUp y para pasar el foco al siguiente control puedes hacer esto:


if Ord(Key) = 13 then
begin
PostMessage(Form1.Handle, WM_NEXTDLGCTL, 0, 0);
end;

diego11
07-12-2007, 17:08:07
Gracias jhonny, lo que me has dicho me ha funcionado perfectamente.

Buscando en los trucos he encontrado que hay uno para desplazarse por los TEdit de un formulario usando Enter, cambiando una línea se puede adaptar para que sirva para todos los controles, sólo hay que seguir los pasos al pie de la letra y hacer el cambio que os pongo a continuación:

procedure TMainForm.AppMessage(var Msg: TMsg; var Handled: Boolean);
var
actual: TWinControl;
begin
if Msg.message = WM_KEYDOWN then
if Msg.wParam = VK_RETURN then
begin
actual := Screen.ActiveControl;
if actual is TEdit then --> COMENTAMOS O ELIMINAMOS ESTA LÍNEA
Msg.wParam := VK_TAB;
end;
end;Gracias a todos y perdonad las molestias