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

[0] Índice de Mensajes

Ir a la versión completa