Partie II : Améliorer un composant par héritage


précédentsommairesuivant

Introduction

Maintenant que nous savons tout de la création de composants non-visuels, il est temps de s'attaquer aux composants visuels.

Nous allons donc commencer par voir comment il est possible d'améliorer des composants existants par la technique de l'héritage. Cette technique est certainement la plus importante, surtout au niveau didactique, puisqu'elle met en jeu un principe clef de la POO : la réutilisation du code.

 
Sélectionnez

type
  TLabelAmeliore = class(TLabel)
    ...
  end;
			

Comme nous l'avions fait dans la première partie, nous allons apprendre en pratiquant : nous allons créer un composant améliorant un composant existant.

I. Choix du composant à développer

Pour cet exemple, nous allons développer un composant image que l'on peut emporter en cliquant dessus et en déplaçant la souris, puis en relâchant le bouton de la souris pour le déposer. On appelle cela le drag 'n' drop en anglais, littéralement glisser-déposer.

Une fois déposé sur la fiche, un TImage est figé : l'utilisateur n'a pas la possibilité de le déplacer. Nous allons donc améliorer ce composant pour permettre à l'utilisateur de prendre l'image et la déposer quelque part.

C'est un composant très utile par exemple si vous voulez réaliser un éditeur quelconque par glisser-déposer.

Nous nommerons ce composant TDropImage ("drop" signifie "laisser tomber" en anglais), et il héritera bien entendu de la classe TImage. Créez à cet effet une nouvelle unité dans le package ComposTutoR (voir la première partie, section II-B), que vous nommerez DropImg.pas.

 
Sélectionnez

unit DropImg.pas;

interface

uses
  ExtCtrls;

type
  TDropImage = class(TImage)
  end;

implementation

end.
			

Si vous préférez, vous pouvez également créer ce squelette via la commande Composant|Nouveau Composant VCL... (Nouveau Composant... pour Delphi 7 et antérieurs). Voici la démarche avec Delphi 2005.

Après avoir sélectionné cet élément de menu, la boîte de dialogue suivante apparaît :

Nouveau composant VCL... - Choix du type de composant

Il n'y a pas d'équivalent à cette page dans Delphi 7, puisque cela concerne .NET. Après avoir sélectionné Win32 (par défaut), cliquez sur Suivant. La page suivante apparaît :

Nouveau composant VCL... - Choix du composant ancêtre

Sur cette page, vous devez sélectionner le composant ancêtre de votre nouveau composant. Dans ce cas sélectionnez TImage, puis cliquez sur Suivant. La page suivante demande quelques informations supplémentaires sur le composant, notamment son nom de classe.

Nouveau composant VCL... - Nom de classe et autres

La page de la palette est la catégorie dans laquelle apparaîtra votre composant dans la palette des composants. Cette information sert ici à générer la procédure Register. Voilà ma raison de ne pas aimer cette démarche : cela génère cette procédure dans la même unité que le composant, alors qu'il faut la placer dans un autre package, comme nous l'avons fait jusqu'à présent.

La dernière page vous permet de générer l'unité :

Nouveau composant VCL... - Créer l'unité

Une attitude plus professionnelle aurait été de créer une classe TCustomDropImage dont les nouvelles propriétés seraient déclarées protected, puis d'en dériver une classe TDropImage où l'on redéfinirait ces propriétés comme published. Cela permettrait de créer un autre composant améliorant encore le TDropImage mais ne souhaitant pas que certaines de ses propriétés soient publiques. Nous laisserons ce point de côté pour des raisons de facilité.


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Tutoriels
Les génériques avec Delphi 2009 Win32 (English version) - également disponible en espagnol et en russe
Réaliser un plug-in comportant un composant
Construire une procédure pointant sur une méthode
Création de composants - en 4 parties
Refactoring avec Delphi 2007
Prise en main de Delphi 2005
Analyseurs syntaxiques - Leur fonctionnement par l'exemple
Créer un fichier d'aide HLP
Pourquoi un paramètre const change-t-il mystérieusement de valeur ?
Sources
SJRDUnits - Routines et classes diverses
SJRDComps - Quelques composants
Projet Sepi
Présentation
FAQ Sepi
Programmes
FunLabyrinthe - Jeu de labyrinthe très spécial et très fun
TrickTakingGame - Jeux de cartes à plis en ligne
MultiAgenda - Agenda multi-répertoires
DecodeFormulaires - Décode les formulaires
Excel --> HTML - Convertisseur de tableaux Excel en HTML
AddressLinks - Lie les adresses Internet et e-mail d'un document HTML
Vipion - Tic Tac Toe sur 4x4 cases avec jeu de l'ordinateur
BigCalc - Calculatrice de haut niveau
Espace paroissial Astérion de Watermael-Boitsfort
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Sébastien Doeraene. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.