IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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

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

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 ni 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.