Programación General > Delphi
Asociando Eventos A Un Control
(1/1)
fxge:
Necesito crear un componente durante la ejecución del programa. Especificamente un TImage. Mi problema es ¿como puedo asociarle una rutina al evento OnClick del nuevo objeto? No puedo asociar directamente el procedure a la propiedad OnClick por cuanto ésta espera un TnotifyEvent. ¿Alguna sugestión?
Gracias,
Francisco
Enko:
Si puedes asociar tus propios procedimientos a Eventos de Componentes generados en Tiempo de Ejecucion y en Tiempo de dise;o tambien.
Tiene que ser un procedimiento de tipo TNotifyEvent, es decir con el parametro Sender.
Aqui te pongo un ejemplo.
--- Código: Text --- type TForm1 = class(TForm) Button1: TButton; Image1: TImage; procedure FormCreate(Sender: TObject); private { Private declarations } public Image: TImage; procedure MyClick(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject);begin Image := TImage.Create(Form1); //puede ser Self, nil Image.Parent := Form1; {.... lo que haga falta} Image.OnClick := myClick;end; procedure TForm1.MyClick(Sender: TObject);begin ShowMessage('presionaste la imagen');end; Tienes que definir un procedimiento de tipo TEvent:
--- Código: Text --- procedure Nombre(Sender:TObject); Y luego asignarlo al Evento onClick de la imagen.
Si quieres acceder a las propiedades de la imagen desde el evento on Click, poruqe tienes varias Imagenes, y no sabes en la cual se hizo el Click, usa el parametro Sender con Type Casing>
--- Código: Text --- procedure TForm1.MyClick(Sender: TObject);begin if Sender is TImage then begin TImage(Sender).Picture.Canvas.Bitmap.SaveToFile('test.bmp'); //guarda la imagen en la que se hizo click ShowMessage(InttoStr(TImage(Sender).Width)); //muestra el acho end;end;
Usando el Sender como si fuera TImage, pudes asignar el mismo procedimiento a Distintas Imagenes..
--- Código: Text --- Image1.onClick := myClick;Image2.onClick := myClick;ImageN.ohclick := MyClick;
Cualquier otra duda que surga, no dudes en avisar
Saludos
Navegación
Ir a la versión completa