dernière mise à jour le : samedi 29 janvier 2000
Retour au sommaire.
Chapitre précédent
Chapitre suivant.
CE QU' IL FAUT COMPRENDRE
En réalité, un évènement est une propriété comme une autre si ce n'est qu'elle désigne une procédure (en réalité, c'est un pointeur vers une procédure).
Evènements |
= |
Propriétés |
|
= |
|
Un événement (au sens de ce que l'on remplit dans l'inspecteur d'objet) contient le nom de la procédure qui doit être déclenchée lorsqu'un événement se produit. Par exemple, si dans l'inspecteur d'objet (ou par programme) on donne la valeur EditVert1Exit à l'événement OnExit : lorsque l'on retirera le focus à notre EditVert, la procédure portant le nom EditVert1Exit sera déclenchée.
Par défaut (lorsque l'on a rien mis comme valeur dans la cas de l'événement), OnExit (par exemple) est égal à nil (et donc rien ne se passe lorsque l'événement se produit).
CREATION D'UN EVENEMENT
Dans l'exemple précédent, lorsque l'on avait ajouté une
propriété, on avait écrit dans la partie published
:
property
Majuscule:TMajuscule read FMajuscule write
SetMajuscule; c'est cette ligne qui faisait apparaître Majuscule
dans l'inspecteur d'objet.
FMajuscule était une variable qui servait à stocker la
valeur que l'on attribuait à Majuscule. Lorsque l'on faisait UneVariable:=Majuscule; la déclaration read FMajuscule indiquait
à Delphi qu'il fallait interpréter UneVariable:=Majuscule
par UneVariable:=FMajuscule.
FMajuscule était une variable déclarée dans la partie private.
On vient de voir qu'un événement n'est ni plus ni moins qu'une propriété un peu particulière (c'est une propriété qui pointe vers une procédure). On va donc créer un événement de la même façon que l'on a créé une propriété. Reprenez le Source obtenu au chapitre précédent.
A ce stade, vous pouvez compiler et tester votre composant OnChangeCase apparaît dans l'inspecteur d'objet.

Pourtant, l'événement OnChangeCase n'est jamais déclenché. Nous devons indiquer dans notre code quand il doit se déclencher. Pour cela, ajoutez la ligne suivante à la fin de l'implémentation de la procédure TEditVert.TextCase :
if Assigned(FOnChangeCase) then FOnChangeCase(Self);
TEditVert.TextCase devient:
procedure TEditVert.TexteCase;
begin
| if Majuscule=1
then Text:=AnsiUpperCase(Text); if Majuscule=-1 then Text:=AnsiLowerCase(Text); if Assigned(FOnChangeCase) then FOnChangeCase(Self); |
end;
if Assigned(FOnChange) renvoie True
si il est différent de nil c'est à dire si
l'utilisateur du composant a mis quelque chose dans l'inspecteur
d'objet dans la ligne OnChangeCase ou s'il lui a
affecté une valeur (OnChangeCase:= Une variable
de type TNotifyEvent) dans son programme.
FOnChangeCase(self) déclenche la procédure qui
est désignée (pointée) par le contenu de OnChangeCAse.
A ce stade, votre source doit être ainsi : Source
Faites un essai en compilant votre composant puis en commençant un nouveau projet. Dans la fiche "Form1" ajoutez un EditVert et un Button. Associez à l'événement OnClick du Button le déclenchement de la procédure EditVert1.TexteCase ou la modification de la propriété Majuscule.
par exemple :
procedure TForm1.Button1Click(Sender: TObject); begin EditVert1.Majuscule:=1; end;
Si vous associez une procédure à l'événement OnChangeCase par exemple :
procedure TForm1.EditVert1ChangeCase(Sender: TObject);
begin
ShowMessage('les majuscules ont changées');
end;
Cette dernière sera déclenchée à chaque fois que vous cliquez sur le "Button".
Retour au sommaire. Chapitre suivant.