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


précédentsommairesuivant

II. Fonctionnement du composant

Commençons par étudier comment va fonctionner notre composant dans une application.

Le principe en est assez simple : lorsqu'on enfonce le bouton gauche de la souris, on crée un clone de l'image qui va se déplacer au gré des mouvements de la souris. Une fois qu'on relâche le bouton gauche, on détruit le clone et on envoie un événement pour indiquer les coordonnées du largage.

Les coordonnées seront calculées de deux façons différentes, selon qu'un contrôle a été désigné ou non comme celui sur lequel doivent être déposées les images.

Dans le premier cas, on donnera les coordonnées par rapport à ce contrôle. Dans le deuxième, on donnera les coordonnées par rapport au parent de notre TDropImage.

III. Type de l'événement OnDrop

Bien entendu, le fait que l'utilisateur dépose l'image sera signalé par un événement. Cet événement se nommera OnDrop et sera du type TDropEvent.

Cet événement devra fournir en paramètre, en plus de Sender, les coordonnées où a été déposée l'image. Il se déclarera donc comme suit :

 
Sélectionnez

type
  TDropEvent = procedure(Sender : TObject; X, Y : integer) of object;
			

IV. Les différentes propriétés de TDropImage

En plus de l'événement OnDrop, le composant TDropImage devra posséder une propriété DropControl de type TControl indiquant sur quel contrôle l'image doit être déposée. Ce contrôle faisant normalement partie du parent du TDropImage.

De plus, la propriété Enabled déclarée dans TImage empêchera, si elle est placée à False, de prendre l'image pour la déposer.

Finalement, nous aurons besoin d'une variable privée de type TImage pour le clone.

Voici donc à quoi ressemble le code de notre classe pour l'instant :

 
Sélectionnez

TDropImage = class(TImage)
private
  FClone : TImage;

  FDropControl : TControl;
  FOnDrop : TDropEvent;
public
  constructor Create(AOwner : TComponent); override;
  destructor Destroy; override;
published
  property DropControl : TControl read FDropControl write FDropControl;
  property OnDrop : TDropEvent read FOnDrop write FOnDrop;
end;
			

précédentsommairesuivant

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.