Département Informatique TP07 : Création de composant VCL Page 1/2 Lors de ce TP, nous allons étudier comment créer des composants VCL, utilisables sous Borland Developper Studio 2006. L'étude serait similaire pour des composants d'un autre système de developpement (par exemple MS .NET)
Attention : bien finir le TP (faire le IV) avant de quitter la salle.
I : Composant 3DLabel
Nous allons étudier un composant très simple, une étiquette texte en relief. Pour cela, nous allons créer un composant VCL Label3D qui reprendra les caractéristiques d'un TLabel mais en ajoutant une notion de relief (en fait un simple ombrage).
Ouvrez le Borland Developper Studio. Choisir « Nouveau Package ».Faire ensuite un nouveau composant. Choisir TLabel comme ancêtre. Choisir TLabel3D comme nom de classe, IUT comme nom de palette, prendre un chemin local comme nom d'unité. Faites de même pour le nom du package.
L'EDI vous donne alors un squelette de fichiers source pour le composant (un fichier cpp et un fichier h). Les fonctions déjà écrites sont essentielles et ne doivent pas être effacées.
Dans le fichier d'en-tête (.h) nous allons créer une nouvelle propriété pour ce composant : la couleur de l'ombre. Pour cela, il faut une variable privée (par exemple couleur_ombre) de type
TColor. Ensuite, dans la section __published, il faut une propriété pour accéder à cette variable :
__property TColor Ombre =
{read=couleur_ombre,write=couleur_ombre};
De même, il nous faut un entier pour choisir le décalage en pixels entre le texte « normal » et son ombre.
Il faut ensuite définir comment le Label3D est affiché. Pour cela, il faut redéfinir la méthode Paint qui s'occupe de « dessiner » le contrôle.
void __fastcall Paint ();
Construire le package. S'il n'y a aucune erreur (ni warning, faites bien attention), installez-le.
Vérifiez le fonctionnement du composant. Remarquez qu'une modification des paramètres ajoutés (ombre, décalage) ne ré-actualise pas l'affichage. Ecrire une fonction « set » qui modifie la couleur de l'ombre et met à jour l'affichage :
void __fastcall TLabel3D::SetOmbre(TColor omb) { couleur_ombre = omb;
Invalidate();
}
Faites tester le fonctionnement du composant dans une application fenêtres VCL.
Département Informatique TP07 : Création de composant VCL Page 2/2
II : Composant TClock
Nous allons à présent écrire un composant qui représente une horloge. Nous partirons pour cela d'un TCustomLabel (une classe identique à TLabel mais avec des propriétés non publiées) et nous lui ajouterons un composant TTimer pour « compter » le temps. Ce « timer » sera interne et ne doit pas être visible à l'utilisateur du composant. Il doit avoir une fréquence de rafraichissement de moins d'une seconde.
Pour lire l'heure du système, il suffit d'appeler la méthode TDateTime::CurrentTime() et de la convertir en chaîne par sa méthode FormatString() (voir l'aide VCL pour + de détails).
L'utilisateur doit pouvoir activer ou non l'horloge, et aussi régler la police de caractères.
Ecrire ce composant. Installez-le.
Faites tester à l'enseignant.
III : Composant TAlarm
Nous allons à présent créer un autre composant, qui réalisera la fonction d'horloge (il héritera donc du précédent) mais qui, en outre, lancera une alarme (un évenement OnAlarme...)
Pour cela, nous allons ajouter une propriété Alarme, de type AnsiString, qui devra contenir une alarme sous la forme HH:MM:SS.
Il faut également ajouter une propriété de type evennement (TNotifyEvent) qui renvoie à un attribut qui est en fait un pointeur de fonctions.
Modifier le code de manière à, si l'heure de l'alarme est atteinte, déclencher l'évennement (mais une seule fois).
Faites vérifier à l'enseignant.
IV : Fin du TP
Afin de laisser la machine dans un état propre, il faut déinstaller votre package.
Sous Developper Studio, faites tout fermer, puis projet, options par défaut, C++ Builder, packages, et « retirer » votre paquet.
Quittez proprement l'EDI avant de fermer votre session.