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

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

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.