Primero esboce la idea:
1. Cree una clase con un campo de edad FAge;
2. Lea y escriba FAge a través del atributo Age;
3. Si la edad ingresada es exactamente de 100 años, se activará un evento. : OnHundred
unit Unit1; la interfaz usa Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class (TForm) Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click (Sender: TObject ); procedimiento Button2Click (remitente: TObject); procedimiento Button3Click (remitente: TObject); fin ; {primero defina un tipo especial: el tipo de procedimiento al que pertenece un objeto; esta es la premisa de crear un evento} TMyEvent = procedimiento del objeto ; { TMyClass class) TMyClass = class estricto FAge privado : Entero; {Campo de edad} FOnHundred: TMyEvent; {Especifique una variable para el tipo TMyEvent que acabamos de definir: FOnHundred} procedimiento SetAge (valor constante : entero); procedimiento público SetOnHundred1; {el procedimiento que se llamará al establecer un evento} procedimiento SetOnHundred2; {Procedimiento a llamar cuando se establece un evento} constructor Crear; propiedad Edad: Entero leer FAge escribir SetAge; propiedad OnHundred: TMyEvent leer FOnHundred escribir FOnHundred; {De hecho, los eventos también son propiedades} {El nombre de los eventos generalmente comienza con On} final; var Form1: TForm1; implementación {$ R * .dfm} {TMyClass} constructor TMyClass.Create; begin FOnHundred: = SetOnHundred1; {Cuando se crea el objeto, primero dejamos que el evento llame al método SetOnHundred1 end } ; procedimiento TMyClass.SetAge ( const Valor: entero); comience si (Valor> 0 ) y (Valor < 200 ) luego Fage: = Valor; si Valor = 100 entonces OnHundred; {Cuando la edad de entrada es 100 años, active el evento} end ; procedimiento TMyClass.SetOnHundred1 ; comenzar ShowMessage ( '¡Felicitaciones por su cumpleaños de 100 años!' ); finalizar ; procedimiento TMyClass.SetOnHundred2; comenzar ShowMessage ( '¡Espero que todos podamos vivir para tener 100 años!' ); final ; // Prueba 1: procedimiento TForm1.Button1Click (Remitente : TObject); var myClass: TMyClass; begin myClass: = TMyClass.Create; myClass.Age: = 99 ; {si la edad no es negativa pero menos de 200} ShowMessage (IntToStr (myClass.Age)); {99; el objeto acepta } MyClass.Free; end ; // Prueba 2: procedimiento TForm1.Button2Click (Remitente: TObject); var myClass: TMyClass; begin myClass: = TMyClass.Create; myClass.Age: = 100 ; {El evento se activará en este momento, aparecerá un cuadro de diálogo: ¡Felicitaciones por su cumpleaños de 100 años!} myClass.Free; end ; // Prueba 3: procedimiento TForm1.Button3Click (Remitente: TObject); var myClass: TMyClass; begin myClass: = TMyClass.Create; myClass.OnHundred: = myClass.SetOnHundred2; {deje que el evento apunte a otro método} myClass.Age: = 100 ; {esta vez será El evento se activará y aparecerá un cuadro de diálogo: ¡espero que todos podamos vivir hasta los 100 años!} MyClass.Free; end ; {En esta sección, personalicé un tipo de evento: TMyEvent, que no tiene parámetros, y los tipos de eventos definidos por el sistema general son todos Hay parámetros; el tipo y el número de parámetros se especifican cuando se define el tipo de evento, tipo de evento es un puntero, apunta a un proceso, Los parámetros del proceso de llamada a eventos deben ser los mismos que la definición. Por ejemplo, TMyEvent no tiene parámetros, y SetOnHundred1 y SetOnHundred2 que llama no tienen parámetros. } Fin .
Reimpreso: https://www.cnblogs.com/del/archive/2008/01 /11/1034525.html