Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-04-2011
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Agregar Evento a una Clase

Hola gente... estoy buscando por el foro y por otras partes y no encuentro lo que necesito...
Tengo un TPanel y quiero agregarle los eventos del teclado (OnKeyDown, OnKeyPress, OnKeyUp), supongo que los tiene pero no publicados.. alguien me pude decir como lo hago...

desde ya muchas gracias..
Responder Con Cita
  #2  
Antiguo 11-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola FENIXadr.

Tenes que desprotejer la clase TPanel, luego escribir y asignar los eventos:

Ejemplo:
Código Delphi [-]
type
  TPanel = class(ExtCtrls.TPanel);
  TForm1 = class(TForm)
    Panel1: TPanel;
    procedure FormShow(Sender: TObject);
  private
    procedure Panel1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    procedure Panel1KeyPress(Sender: TObject; var Key: Char);
    procedure Panel1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
  public
 end;
...
interface
procedure TForm1.Panel1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ShowMessage('Panel1 OnKeyDown');
end;

procedure TForm1.Panel1KeyPress(Sender: TObject; var Key: Char);
begin
  ShowMessage('Panel1 OnKeyPress');
end;

procedure TForm1.Panel1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  ShowMessage('Panel1 OnKeyUp');
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  Panel1.OnKeyDown:= Panel1KeyDown;
  Panel1.OnKeyPress:= Panel1KeyPress;
  Panel1.OnKeyUp:= Panel1KeyUp;
end;
...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-04-2011 a las 04:22:26.
Responder Con Cita
  #3  
Antiguo 11-04-2011
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Huuuyyyy.. bueniiiisimoo.. casi que anduvo.. te comento el problemita que tiene... yo necesito usar las téclas del cursor y para éstas teclas toma solo el evento OnKeyUp.. para las demás toma lo otros dos eventos .. pero no OnKeyUp.. que puede ser??.. raro no?
Responder Con Cita
  #4  
Antiguo 11-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No sé, realmente no se me había ocurrido experimentar con esas teclas en un TPanel...
Probá si de este modo le das solución:
Código Delphi [-]
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    ...
  private
    procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
  public
  end;
...

implementation

procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
begin
  if Panel1.Focused then  
  begin
    case Message.CharCode of
      VK_LEFT  : ShowMessage('VK_LEFT');
      VK_RIGHT : ShowMessage('VK_RIGHT');
      VK_UP    : ShowMessage('VK_UP');
      VK_DOWN  : ShowMessage('VK_DOWN');
      VK_TAB   : Perform(WM_NEXTDLGCTL, 1, 0);  (* para abandonar el foco *)
    end;
    Message.CharCode:= 0; (* no pierde el foco con: VK_UP,... *)
  end;
   ...
   inherited;
end;
...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-04-2011 a las 16:59:03.
Responder Con Cita
  #5  
Antiguo 11-04-2011
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
haaaa bueee... genialllllllllll.. de donde sacaste esta info???.. bueniiiiisimooo.. anda joya.. muchisisisisimas gracias..
Responder Con Cita
  #6  
Antiguo 11-04-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Me alegra muchisimo que te haya servido.

La idea se me cruzó por que varios controles entre los que está TPanel, no pueden recibir el foco desde teclado.
Pero lo que la encauzó fue un código que habia leido (y usado) de Zarko Gajic para detectar la tecla TAB en un TEdit:
Código Delphi [-]
procedure CMDialogKey(Var Msg: TWMKey) ;message CM_DIALOGKEY;

implementation

procedure TForma.CMDialogKey(Var Msg: TWMKEY) ;
begin
  if (ActiveControl is TEdit) and (Msg.Charcode = VK_TAB) then
   ShowMessage('TAB key pressed?') ;
  inherited;
end;

Así que la info y los laureles son de Zarko...

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 11-04-2011 a las 22:22:51.
Responder Con Cita
  #7  
Antiguo 12-04-2011
FENIXadr FENIXadr is offline
Miembro
 
Registrado: may 2010
Ubicación: Córdoba - Cba. - Argentina
Posts: 102
Poder: 14
FENIXadr Va por buen camino
Al amigo Zarko Gajic habría que localizarlo y hacerle unas cuantas preguntitas jeje...

bueno muchisimas gracias (again) y este hilo se puede dar por finalizado..

Saludos.-.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Agregar clase Tform en medio de Herencia Visual FlacoNet OOP 6 07-02-2010 14:47:37
problemas al agregar metodo a una clase base DANY OOP 1 14-01-2008 22:29:32
crear un evento en una clase? chelox OOP 4 06-06-2007 20:14:20
ayuda como agregar una clase Big_blood Varios 1 24-04-2007 05:25:03
agregar o cargar un evento a un RxDBLookupCombo omardelahoz Varios 1 07-07-2004 03:32:23


La franja horaria es GMT +2. Ahora son las 09:14:05.


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
Copyright 1996-2007 Club Delphi