PDA

Ver la Versión Completa : Eventos de un componente...


craven
08-05-2003, 14:19:22
Hola amigos. Ya estoy por aqui otra vez para consultaros una cosilla, a ver si me podeis ayudar. Os cuento. Estoy creando un control basado en un TEdit, con una serie de modificaciones. De esta forma, y como os podreis imaginar, he declarado mi control de la siguiente forma:

TMiControl = Class (TEdit)
private
....
end ;

La cosa es que me gustaría que el control que yo he creado responda a un evento del TEdit, o sea, hablando claro: me gustaria que cuando el usuario cambia algun texto de la ventana de texto (valga la redundancia), mi control realice una serie de modificaciones sobre el mismo. ¿Cómo hago esto? Espero haber sido claro. Gracias de antemano y un saludo para todos.

pedrohdez
08-05-2003, 15:32:03
Hola Craven,

Te cuento el proceso, primero mira en la ayuda el evento que quieres "retocar" a ver en que objeto esta declarado, en el caso de OnChange esta definido en TCustomEdit, asi que me voy al fuente correspondiente y localizo donde se usa, en este caso TCustomEdit.Change y veo que esta declarado como Dynamic, es decir se puede heredar, perfecto, pues la solucion es:


TMiControl = Class (TEdit)
protected
procedure Change; override;
..
Implementation

procedure TMiControl.Change;
begin
< tu codigo >
inherited;
< tu codigo >
end;


Puedes elegir si quieres que tu codigo se ejecute antes o despues del codigo original o incluso si no quieres que se ejecute, quitas el inherited y listo.

craven
08-05-2003, 16:15:25
Ante todo, muchas gracias por tu ayuda, aunque, si me permites, voy a abusar de ella. Ampliando mi pregunta anterior: ¿y si quiero atender el evento de pérdida de foco? No esta incluido en la clase base... Nuevamente, gracias por todo.

__cadetill
08-05-2003, 16:17:51
Hola

El evento de perdida de foco, SI que esta incluido en la clase base (TEdit). Este es el Exit. Puedes hacer lo mismo que lo expuesto por pedrohdez para este evento

Espero te sirva