Le Builder, pour améliorer la VCL, introduit des notions de POO supplémentaires par rapport à la norme C++. Nous allons les étudier rapidement.
Le Mot-Clé published
Chaque composant du Builder (une classe en fait) contient un certain nombre de propriétés (données) qui sont visibles dans linspecteur dobjets, et qui peuvent être modifiés durant la phase de développement.
Dans la déclaration de la classe (fichier .h en général), chacune de ces donnée est précédée du mot clé __published. Les deux traits __ indiquent que ce mot-clé est propre au C++ builder et nexiste pas (encore) en C++ standard.
Par exemple :
class TMaClasse
{
private :
int P1 ;
__published :
short P2 ;
public :
TMaClasse(void) ;
} ;
Le Mot-Clé property
Lorsquune donnée est déclarée property, cela permet de déclarer automatiquement comment des méthodes (fonctions) associées pour lire et/ou écrire la donnée. Par exemple :
class TForm :public ....
{
private :
.....
Graphics : :TIcon *FIcon ;
.....
void __fastcall SetIcon(Graphics : :TIcon *) ;
....
public :
....
__published :
____property Graphics : :TIcon* Icone={read=FIcon,write=SetIcon} ;
} ;
Un composant VCL est donc une classe C++. Toutes les classes VCL dérivent (directement ou non) de la classe abstraite TObject. à voir hiérarchie des classes VCL
Ces classes contiennent des données (champs), pouvant être : publiques (public), privées (private), protégées (protected), publiées (__published) et être ou non des propriétés (__property).
Elles contiennent également des méthodes (fonctions), pouvant être elles aussi privées, protégées ou publiques. Comme toute classe C++, il y a des méthodes particulières : les constructeurs et le destructeur.
Elle contiennent également des événements, en fait des fonctions de réponse a un évènement donné. (par exemple, réponse à lévènement OnClick).
Chaque classe VCL dérive dune ou plusieurs classes VCL, et peut avoir un ou plusieurs descendants. Tous les mécanismes dhéritage du C++ sont bien entendu valables.
Une classe VCL est dite " visuelle ", on parle également de composant. Dans léditeur du C++ Builder, une icône représente le composant, qui peut être utilisé directement, visuellement.
Un composant peut être créé et détruit automatiquement par le Builder, mais on peut également le créé (avec new) et le détruire (avec delete) " à la main ".
TEdit encapsule lobjet Windows " zone dédition ", cest à dire une petite zone dans laquelle lutilisateur peut taper un texte.
Pour affecter un texte à un TEdit, il suffit daffecter sa propriété Text :
Edit1->Text="Texte" ;
Pour lire le texte dun TEdit, il suffit de lire sa propriété Text :
AnsiString s=Edit1->Text ;
Windows gère lui-même laffichage du TEdit, le curseur texte, etc....
Il y a quelques événements associés au TEdit, comme OnChange qui indique que le texte contenu à lintérieur à changé, ou OnKeyPress indiquant la frappe dune touche.
Un bouton est en fait une fenêtre particulière, qui réagit à un évènement utilisateur tel quun clic de souris. Le système soccupe en principe de dessiner le bouton, dans tous ses états, le programme na quà répondre aux événements du bouton.
Classes TButton et TBitBtn :
Ces classes VCL gèrent les comportements et laffichage de boutons Windows sur lesquels lutilisateur peut cliquer à la souris. Un TButton ne comporte quun texte, alors quun TBitBtn peut comporter une ou plusieurs images. Le C++ Builder fournit les images pour les actions suivantes : OK, Annuler, Aide, Fermer.... Ces boutons sont utilisés pour produire une action particulière.
Un programmeur peut dériver une classe TButton pour créer un nouveau type de bouton.
Classe TRadioButton :
Un bouton radio est un bouton particulier, qui possède deux états (actif ou non). Ils sont en général regroupés par groupe de boutons radio sexcluant mutuellement. Ils utilisés pour des choix multiples.
Classe TCheckBox :
Une case à cocher est un bouton à 2 états (coché ou non) qui fonctionne en bascule. Ils sont utilisés pour effectuer des choix binaires.
Pour tous les boutons, lévènement le plus important est OnClick, qui se produit quand lutilisateur " appuie " sur le bouton avec la souris. En général, on ne définit que la réponse à cet évènement.
Les menus sont un bon moyen dinterface pour proposer les actions du programme à lutilisateur.
Sous Windows, les menus sont de deux types : déroulant et surgissant.
Les menus déroulants sont des instances de la classe TMainMenu. Ils sont en général créés durant la phase de développement mais peuvent être modifiés dynamiquement dans le programme.
Les menus surgissants sont des instances de la classe TPopupMenu. Ils sont très semblables aux menus déroulants.
La classe TMenuItem correspond à un élément de menu.
Pour un menu, le programmeur ne traite en général que lévènement OnClick associé à chaque TMenuItem.
Il existe une multitude de composants listes, plus ou moins complexes, qui permettent de gérer visuellement une liste. Le programmeur accède aux éléments de celle-ci par la propriété Items du composant Liste. Les composants Liste standards sont les suivants :
TListBox, TComboBox, TCheckListBox, TTreeView, TDirectoryListBox, TDriveComboBox, TFilterComboBox, TCDirectoryOutline, TCCalendar.
Durant la phase de développement, on dépose sur la fiche (classe TForm : représente une fenêtre) les composants désirés. On modifie leurs propriétés principales (Name, Caption, Enabled par ex.) par linspecteur dobjets.