Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   evento on keypress y componente dinamico (https://www.clubdelphi.com/foros/showthread.php?t=23727)

Rabata 26-07-2005 21:11:46

evento on keypress y componente dinamico
 
Hola.

Tengo un componente creado dinámicamente.

quiero que el evento OnKeyPress sea un procedimiento que ya he escrito

Lo he hecho con el evento onClick de la sgte manera:

MICHECKBOX.OnClick:=MiOnClick;

EL problema es con el Evento OnKeyPress, al cual le tengo que pasar los parámetros, y no se como hacerlo

MICHECKBOX.OnKeyPress:=MiOnKeyPress(....esto....);

pues la declaracion de MiOnKeyPress necesita el TObject, que supongo que será self o MICHECKBOX...supongo he dicho.

y el segundo parámetro es Key........?¿?¿?¿?¿?¿

Q HAGO¡¡¡¡¡¡

Gracias.

maeyanes 26-07-2005 21:17:54

Con solo hacer: MICHECKBOX.OnKeyPress := MiOnKeyPress ya tienes solucionado tu problema. Claro, la declaración del método MiOnKeyPress debe ser igual al evento deseado.

Los parámetros del métodos los asigna el mismo componente al momento de disparar el evento. Internamente hace algo como esto:
Código Delphi [-]
procedure TCheckBox.DoKeyPress(..);
begin
  //..
  if Assigned(FOnKeyPress) then
    FOnKeyPress(Self, ..)
end;


Saludos...

Rabata 26-07-2005 21:39:17

el error q me da es not enough parameters


algo tengo q hacer mal.



De todas formas le he puesto esos eventos a un componente invisible y he metido el código q queria y si funciona...

aunq me he quedado con las ganas de saber en q me he equivocado.


gracias.

maeyanes 26-07-2005 21:43:19

Si pones parte del código que estás usando, específicamente el que te da el error, te podríamos ayudar mejor...

dec 26-07-2005 21:54:38

Hola,

Si lo que quieres es asignar a un componente un método para su evento "OnKeyPress" debes implentar en un objeto un procedimiento con los parámetros adecuados para responder a dicho evento:

Código Delphi [-]
   procedure TeclaPresionada(Sender: TObject; var Key: Char);
Por ejemplo, en el siguiente código se implementa un método con los parámetros adecuados dentro de un formulario y se asigna al evento "OnKeyPress" de dicho formulario el método en cuestión aprovechando el evento "OnCreate":

Código Delphi [-]
 unit UFormulario;
 
 interface
 
 uses
   Forms, SysUtils, Dialogs;
 
 type
   TfrmPrincipal = class(TForm)
     procedure FormCreate(Sender: TObject);
   private
     procedure TeclaPresionada(Sender: TObject; var Key: Char);
   end;
 
 var
   frmPrincipal: TfrmPrincipal;
 
 implementation
 
 {$R *.dfm}
 
 procedure TfrmPrincipal.FormCreate(Sender: TObject);
 begin
   OnKeyPress := TeclaPresionada;
 end;
 
 procedure TfrmPrincipal.TeclaPresionada(Sender: TObject; var Key: Char);
 resourcestring
   rsMsg = 'Se pulsó la tecla: %s';
 begin
   ShowMessage(Format(rsMsg, [Key]));
 end;
 
 end.


La franja horaria es GMT +2. Ahora son las 17:01:48.

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