![]() |
Aun tengo dudas....
Hola amigos. Agradezco vuestra ayuda, pero aún hay algo que no funciona en todo esto... A ver. Imaginad el siguiente código:
type TMiEvento = procedure (Sender: TObject; var value : Integer) ; TMiClase = class private valor : Integer ; event : TMiEvento ; procedure SetValor (vlr : Integer) ; public property OnMyEvent: TMiEvento read event write event ; property Asignar: Integer read valor write SetValor ; end ; TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure mioOnEvento (Sender: TObject; var value : Integer) ; end ; var Form1: TForm1; mio : TMiClase ; implementation procedure TMiClase.SetValor (vlr : Integer) ; begin valor := vlr ; if assigned (event) then event(self,vlr) ; end ; procedure TForm1.Button1Click(Sender: TObject); begin mio.Asignar := 4 ; end; procedure TForm1.FormCreate(Sender: TObject); begin mio := TMiClase.Create ; mio.OnMyEvent := mioOnEvento ; end; ¿Cómo capturo desde el Form1 el evento que lanza MICLASE? Si lo hago como sigue, no funciona... procedure TForm1.mioOnEvento (Sender: TObject; var value : Integer) ; begin ShowMessage('El valor es = ' + intToStr(value)) ; end ; Gracias de antemano. Un saludo a todos. |
Cita:
Lo más recomendable en estos casos es poner un "breakpoint" donde asignas el valor e ir rastreando el código con F7. Siendo un código bastante corto no deberías tener problemas para encontrar dónde está el error. De cualquier forma no podemos adivinar el por qué falla. ¿Qué tal si nos das una ayudadita? // Saludos |
Primero, que
TMiEvento = procedure (Sender: TObject; var value : Integer) of object; (fijate en el of bject). Con of Object defines que es un puntero a método de objeto y no a un procedimiento normal (que no cuelga de un objeto). Por lo demás, he copiado tu código y en el click del botón me sale un ventanuco diciendome el valor asignado. |
Gracias a ambos. Lo que pasaba era exactamente que faltaba 'of object' al final de la declaración del evento. Un saludo.
|
La franja horaria es GMT +2. Ahora son las 20:38:38. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi