![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
|||
|
|||
|
Hola:
Contestando a tu primer mensaje: Cita:
Código:
procedure TForm1.pinta(); begin //lalala end; En tu segundo mensaje: Cita:
Sólo puedes asignarle a un evento un método del mismo tipo que el evento en cuestión, es decir con los mismos parámetros. Como decía Bacteriorn en su respuesta, los eventos están definidos como procedures of Object, eso significa que no son procedures "normales" sino métodos que pertenecen a una clase. Luego sólo puedes asignarle métodos con los mismos parámetros que dicho evento. El tipo de evento más común es el TNotifyEvent, que está definido como: TNotifyEvent = procedure (Sender: TObject) of Object; Es el evento más común por lo que se permite muchas veces asignar a cualquier método que sólo reciba un parámetro de tipo TObject. No lo le puedes asignar un Action directamente porque són dos cosas diferentes, un Evento y un Objeto. Lo que sí puedes hacer es asignarle el OnActivate al evento OnExecute de un Action. Pongamos que tienes un TActionList con un Action1 al que le has asignado algo en su evento OnExecute. Si quieres que tu componente Rafa, al activarse haga lo mismo que esa Action, puedes hacer: Rafa.OnActivate := Action1.OnExecute; La pega con el evento OnMouseDown es que no es del tipo TNotifyEvent, sino que envía algunos parámetros más y no podrías asignarle directamente el OnExecute de un TAction. Con el evento OnClick sí es posible esa asignación. Como ves, debe haber coincidencia de parámetros. Cita:
Sender.Canvas.LineTo(200, 200); esto daría un error de compilación. En cambio, si creemos estar seguros de que dicho Sender SÍ es un TForm1 (bastaría con poner TForm en realidad), lo tratamos como tal, de esta forma le decimos al compilador que trate el Sender como un TForm1, que SÍ tiene Canvas, y la instrucción no da error al compilar y además funciona al ejecutarse.
__________________
Guía de Estilo |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|