Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Impedir KeyPreview form con TCustomcontrol (https://www.clubdelphi.com/foros/showthread.php?t=61013)

Edgtho 22-10-2008 10:41:12

Impedir KeyPreview form con TCustomcontrol
 
Buenas,


Resulta que cree un componente Button a partir de la clase TcustomControl para asi tener control total sobre el dibujado del componente, pero tengo un problema con el KeyPreview del form. Esta propiedad esta activada en el form y tengo capturadas las teclas de las flechas y el ENTER para simular el TAB
Código:

if key = 13 then
    PostMessage(self.handle,WM_NEXTDLGCTL,0,0);

En un Tbutton cuando teniendo el foco le pulsas ENTER captura la tecla y manda el evento onclick pero no se ejecuta el onkeydown del form. En el custom control se ejecuta primero el onkeydown del form y despues el keydown del control.

Esta es la definicion de codigo que tengo en el componente para la captura de teclas
Código:

  protected
    procedure KeyDown(var Key: Word; Shift: TShiftState); override;
    procedure KeyUp(var Key: Word; Shift: TShiftState); override;
  published
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;


Como puedo evitar que se llame al onkeydown del form aunque tenga el keypreview??? estoy seguro que es capturando un evento CM pero no encuentro cual

Edgtho 22-10-2008 10:50:42

Me autorespondo.....:confused:

Tres dias buscando y cinco minutos despues de escribir el post lo descubro.... si eso lo pongo antes :D


Código:

procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;


procedure CMDialogKey(var Message: TCMDialogKey);
begin
  with Message do
    if  (((CharCode = VK_RETURN) and FFocused)) and
      (KeyDataToShiftState(Message.KeyData) = []) and CanFocus then
    begin
      Click;
      Result := 1;
    end else
      inherited;
end;



La franja horaria es GMT +2. Ahora son las 18:13:11.

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