dernière mise à jour le : samedi 29 janvier 2000
Retour au sommaire.
Chapitre précédent
Chapitre suivant
RECUPERATION DE L'EXEMPLE DU CHAPITRE PRECEDENT
Reprenez votre exemple de TEditVert décrit dans le chapitre précédent:
Pour le reprendre : allez dans le menu composant / installer des paquets puis sélectionnez la ligne 'composants utilisateur Borland' (ou 'composants utilisateur Delphi' selon les versions) (laisser la case cochée) puis cliquez sur le bouton Modifier puis double cliquez sur TEditVert. (En Delphi 2, il faut connaitre l'emplacement du fichier source et aller l'ouvrir).

Votre source doit apparaître à l'écran.
AJOUT D'UNE PROPRIETE
Dans cet exemple, nous allons ajouter une propriété Majuscule à notre composant. Cette propriété nous donnera la possibilité de demander à notre composant de mettre le texte en majuscule.
Majuscule est une propriété. Une propriété n'est pas une variable capable de stocker une donné.
Il nous faut donc
Ajout d'une variable capable de stocker la valeur que l'utilisateur affecte à notre propriété.
type
Tmajuscule=Integer;
private { Déclarations privées }
FMajuscule:TMajuscule; c'est cette variable FMajuscule qui sera chargée de stocker la valeur de la propriété majuscule.
Majuscule:=0;
Définir comment se comporte le composant lorsque l'on cherche à l'utiliser
published{ Déclarations publiées }
property majuscule:TMajuscule read FMajuscule write SetMajuscule; Cette ligne property est très importante: c'est elle qui dit à Delphi que Majuscule sera une propriété.
Elle s'inscrit dans la section published.
- read et write sont en quelque sorte une redéfinition de '='
FMajuscule suit le mot read. On indique ainsi que lorsque l'on cherchera à lire cette propriété c'est à dire lorsque l'on fera UneVariable := Majuscule, et bien Delphi l'interprétera comme UneVariable := FMajuscule. FMajuscule est une variable qui devra être déclarée dans la partie private (voir plus loin).
- SetMajuscule défini par write servira lorsque l'on voudra affecter une valeur à cette variable c'est à dire lorsque l'on fera Majuscule := UneVariable.
Ici, lorsque l'on fera Majuscule := UneVariable et bien Delphi déclenchera la procédure SetMajuscule en passant UneVariable comme argument ( c'est à dire SetMajuscule(UneVariable);).
- Le terme qui suit read peut être une simple variable chargée de stocker la valeur 'en privé' et donc déclaré dans la partie private (cas de notre exemple) ou une 'function'
le terme qui suit write peut être une variable ou une procédure (cas de notre exemple).
La section private doit maintenant ressembler à ceci :
private { Déclarations privées }
FMajuscule:TMajuscule; // cette variable sera chargée de stocker la valeur de la propriété majuscule
Procedure SetMajuscule(Majuscule: TMajuscule); // pour le writeIl nous faut maintenant écrire la procédure SetMajuscule.
Dans la partie implementation ajoutez:procedure TEditVert.SetMajuscule (Majuscule: TMajuscule);
begin
FMajuscule:=Majuscule; end;
Le source doit maintenant ressembler à : source
COMPILATION ET AJOUT DANS LA BARRE DES COMPOSANTS
Dans la fenêtre

Cliquez sur compiler. Cela suffit pour à la fois compiler et installer le composant. (En Delphi 2, pour compiler, il faut passer par composant/reconstruire librairie).
Vous pouvez le tester dans un nouveau projet ! :
Dès maintenant, dans l'inspecteur d'objets, vous voyez apparaître la propriété Majuscule :
Contrairement à l'image ci-dessus, Majuscule est à 0 car nous l'avons initialisée à 0 dans TEdit.Create
Pour l'instant, l'intéret d'avoir mis une procédure après le mot write
au lieu d'une variable n'est pas évident.
Nous allons modifier le code pour pouvoir en bénéficier.
procedure TEditVert.SetMajuscule
(Majuscule: TMajuscule);
begin
| {ici, on va rajouter du code servant à contrôler la validité de la valeur de Majuscule} | |
| FMajuscule:=Majuscule; | |
| {ici, on va rajouter du code servant à agir en fonction de la valeur de Majuscule} | |
| {par exemple en mettant en majuscule texte si majuscule=1} |
end;
modifiez le code ainsi:
procedure TEditVert.SetMajuscule
(Majuscule: TMajuscule);
begin
| if (Majuscule<-1) or (Majuscule >+1) then Majuscule:=0; | |
| FMajuscule:=Majuscule; | |
| if Majuscule=1 then Text:=AnsiUpperCase(Text); | |
| if Majuscule=-1 then Text:=AnsiLowerCase(Text); |
end;
Le source doit maintenant ressembler à : source
Compilez comme précédemment puis intégrez votre composant dans un nouveau projet. Dans l'EDI, modifier la valeur de la propriété majuscule en la mettant à 1.

Le texte d'EditVert1 se modifie instantanément.
![]()
Notez que ceci c'est effectué non pas dans un
programme compilé mais dans l'EDI !
En fait, ce qui est indiqué par read et write
se déclenche dans votre programme compilé mais également dans
l'EDI !
Retour au sommaire. Chapitre suivant.