Ver Mensaje Individual
  #1  
Antiguo 15-09-2010
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Reputación: 20
ElDuc Va por buen camino
Lightbulb ¿Se puede "robar" un evento?

Hola a todos,

Estoy haciendo una clase en una unidad independiente, desde la cual me interesaría "utilizar" (no "robar", ahora comprenderéis lo de robar) el evento OnResize del formulario que la utiliza.

No estoy haciendo un componente derivado de la clase TForm, lo que deseo es que cuando el formulario cambia de tamaño, mi nueva clase se entere, ejecute un código y devuelva el control al evento OnResize del formulario por si hay codigo en él.

Todo esto debería ser opaco para el formulario.

Por el momento he conseguido "robar" el evento del Formulario:

Código Delphi [-]
...
 
Interface
 
Type
  MyClass=Class
  Private
    FTheForm:TForm;
    Procedure MyOnResize(Sender:TObject);
  Public
    Constructor Create(AOwner:TForm);
  End;
 
Implementation
 
Procedure MyClass.MyOnResize(Sender:TObject);
Begin
Beep;
End;
 
Constructor MyClass.Create(AOwner:TForm);;
Begin
FTheForm:=AOwner;
FTheForm.OnResize:=MyOnResize
End;
 
End.

Con este código si si se cambia el tamaño del formulario se ejecuta el código de MyOnResize y genera un pitido, pero lo que hago es "ROBAR" el evento ya que si en el evento OnResize del formulario hemos puesto código. éste no se ejecuta.

Me imagino que esto sucede porque al apuntar el evento OnResize del formulario a mi propio evento MyOnResize ya no se ejecuta el antiguo evento.

Me imagino que debe haber una forma de almacenar el evento antiguo antes de reasignarlo para que una vez ejecutado el código del nuevo evento pudiera llamar al código del evento OnResize del formulario pero no sé como hacerlo.

¿Podéis ayudarme?

Última edición por ElDuc fecha: 15-09-2010 a las 10:14:47.
Responder Con Cita