Jusque FlashPascal 12.06.25, l'unité Flash8 déclarait les événements sous la forme:
type MovieClip = external class property onPress: procedure of object; end;
Il était possible d'affecter une méthode à cette propriété ou de créer une méthode portant le même nom.
type MonClip = class(MovieClip) procedure onPress; // méthode portant le même nom procedure m2Press; // méthode qui sera affectée à la propriété end; var m1: MonClip; m2: MovieClip; begin m1 := MonClip.Create(_root, 'm1', 1); // la méthode onPress est automatiquement appelée quand on clique sur le clip m2 := MovieClip.Create(_root, 'm2', 2); m2.onPress := m1.m2Press; // on attache le code de m2Press à l'événement onPress end;
Depuis la version 12.07.02, les événements sont déclarés comme des méthodes virtuelles:
type MovieClip = external class procedure onPress; virtual; end;
Il est alors possible de surcharger cette méthode avec le mot-clé override
.
Mais il est toujours possible de lui assigner une méthode ! De plus, la méthode en question
peut déclarer un paramètre Sender
suplémentaire qui pointe sur l'objet appelant.
type MonClip = class(MovieClip) procedure onPress; override; // override est ici nécessaire procedure m2Press; // même principe qu'avec la propriété procedure m3Press(Sender: TObject); // même principe mais avec un "Sender" end; var m1: MonClip; m2: MovieClip; m3: MovieClip; begin m1 := MonClip.Create(_root, 'm1', 1); // même fonctionnement que précédemment m2 := MovieClip.Create(_root, 'm2', 2); m3 := MovieClip.Create(_root, 'm3', 3); m2.onPress := m1.m2Press; // même fonctionnement que précédemment m3.onPress := m1.m3Press; // même fonctionnement que précédemment, mais avec un Sender end;
Notez que lorsque vous affectez une méthode à une méthode virtuelle, seule l'instance
modifiée est affectée. Pour modifier le comportement de la classe, il faut obligatoirement
surcharger sa méthode par un override
.