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 :
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 :
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
;