PDA

Ver la Versión Completa : Objetos creados en tiempo de ejecución


Scocc
10-06-2003, 06:27:25
Por favor, necesito saber como hacer para definir (en Delphi 7) los eventos de un objeto creado en tiempo de ejecucion, tengo una imagen que creo en tiempo de ejecucion y necesito definirle el procedimiento Click de la imagen, pero al no estar sobre ningun formulario no tengo cómo accederlo y no se como definirlo desde afuera, o sea, una vez que la creo como le defino que cuando alguien haga click sobre la imagen realice tal accion.

Muchas gracias!!

Santiago

roman
10-06-2003, 06:53:41
Simplemente tienes que declarar y asignar el evento manualmente:


interface

type
TForm1 = class(TForm)
private
procedure ImagenClick(Sender: TObject);
end;

implementation

procedure TForm1.ImagenClick(Sender: TObject);
begin
{ Aquí el código que quieras que se ejecute al hacer click }
end;

Después, cuando crees la imagen en código le asignas el evento:

TuImagen.OnClick := ImagenClick;


// Saludos

Scocc
10-06-2003, 22:07:19
Muchisimas gracias, me quedo perfecto!

Santiago

Scocc
11-06-2003, 19:24:26
muy bien, pude relacionar el procedimiento al evento, ahora, tengo una matriz de registros en el formulario, cada registro incluye una imagen (donde se efectua el click) y un Objeto (tObject), un atributo del formulario es un tObject también que no son objetos en si, sino como se los maneja como punteros necesito que cuando hago click sobre la imagen el Objeto apuntado por el formulario sea el mismo que esta en el registro junto con la imagen, intenté mandar el registro, pero me dice que no es valido, que es un procedimiento y no un evento...

Cómo puedo hacer???

Muchas Gracias

Scocc

andres1569
13-06-2003, 20:55:29
Hola scocc:

Voy a darte una solución, quizás no del todo ortodoxa, pero sí útil. Cuando creas cada objeto TImage y lo asocias a un elemento de la matriz, puedes asignarle a la propiedad Tag (para eso está, para este tipo de chapucillas) del TImage el índice a la matriz en que situas dicho TImage. Luego, cuando se ejecuta el OnClick del TImage, capturas el tag del mismo (acuérdate de hacer un cast: TImage(Sender).Tag), y obtienes el objeto mirando en la matriz.

A ver si esto te sirve