Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Saber cuando has pulsado Enter en un botón (https://www.clubdelphi.com/foros/showthread.php?t=51167)

diego11 07-12-2007 13:18:37

Saber cuando has pulsado Enter en un botón
 
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:

Código Delphi [-]
  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:

Código:

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


La franja horaria es GMT +2. Ahora son las 09:44:20.

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