Comprendre les opérations de glisser-déposer dans Delphi

click fraud protection

"Glisser-déposer", c'est maintenir souris d'ordinateur lorsque vous déplacez la souris, puis relâchez le bouton pour déposer l'objet. Delphi facilite la programmation du glisser-déposer dans les applications.

Vous pouvez vraiment faire glisser et déposer de / vers où vous le souhaitez, comme d'un formulaire à un autre, ou de l'Explorateur Windows vers votre application.

Exemple de glisser-déposer

Démarrez un nouveau projet et placez un contrôle d'image sur un formulaire. Utilisez l'inspecteur d'objets pour charger une image (propriété Image), puis définissez DragMode propriété à dmManual. Nous allons créer un programme qui permettra de déplacer un runtime de contrôle TImage en utilisant le technique du glisser-déposer.

DragMode

Les composants permettent deux types de glissement: automatique et manuel. Delphi utilise la propriété DragMode pour contrôler le moment où l'utilisateur peut faire glisser le contrôle. La valeur par défaut de cette propriété est dmManual, ce qui signifie que le déplacement des composants la candidature n'est pas autorisée, sauf dans des circonstances particulières, pour lesquelles nous devons code approprié. Quel que soit le paramètre de la propriété DragMode, le composant se déplacera uniquement si le code correct est écrit pour le repositionner.

instagram viewer

OnDragDrop

L'événement qui reconnaît le glisser-déposer est appelé événement OnDragDrop. Nous l'utilisons pour spécifier ce que nous voulons faire lorsque l'utilisateur dépose un objet. Par conséquent, si nous voulons déplacer un composant (image) vers un nouvel emplacement sur une fiche, nous devons écrire du code pour le gestionnaire d'événement OnDragDrop de la fiche.

Le paramètre Source de l'événement OnDragDrop est l'objet en cours de suppression. Le type du paramètre source est TObject. Pour accéder à ses propriétés, nous devons le convertir dans le type de composant correct, qui dans cet exemple est TImage.

J'accepte

Nous devons utiliser l'événement OnDragOver du formulaire pour signaler que le formulaire peut accepter le contrôle TImage que nous voulons y déposer. Bien que l'acceptation paramètre la valeur par défaut est True, si aucun gestionnaire d'événements OnDragOver n'est fourni, le contrôle rejette l'objet glissé (comme si le paramètre Accept était changé en False).

Exécutez votre projet et essayez de faire glisser et de déposer votre image. Notez que l'image reste visible à son emplacement d'origine pendant le glissement le pointeur de la souris se déplace. Nous ne pouvons pas utiliser la procédure OnDragDrop pour rendre le composant invisible pendant le déplacement, car cette procédure n'est appelée qu'après que l'utilisateur a déposé l'objet (le cas échéant).

DragCursor

Si vous souhaitez modifier l'image du curseur présentée lors du déplacement du contrôle, utilisez la propriété DragCursor. Les valeurs possibles pour la propriété DragCursor sont les mêmes que celles de la propriété Cursor. Vous pouvez utiliser des curseurs animés ou tout ce que vous voulez, comme un fichier image BMP ou un fichier curseur CUR.

BeginDrag

Si DragMode est automatique, le glissement commence automatiquement lorsque nous appuyons sur un bouton de la souris avec le curseur sur le contrôle. Si vous avez laissé la valeur de la propriété DragMode de TImage à sa valeur par défaut dmManual, vous devez utiliser les méthodes BeginDrag / EndDrag pour permettre le glissement du composant. Un moyen plus courant de glisser-déposer consiste à définir DragMode sur dmManual et à démarrer le glissement en gérant les événements de souris.

Maintenant, nous allons utiliser le Ctrl + SourisDown combinaison de touches pour permettre le glissement. Ensemble TImageremettez DragMode dans dmManual et écrivez le gestionnaire d'événements MouseDown comme ceci:

BeginDrag prend un paramètre booléen. Si nous passons True (comme dans ce code), le glissement commence immédiatement; si False, il ne démarre que lorsque nous déplaçons la souris sur une courte distance. N'oubliez pas qu'il nécessite la touche Ctrl.

instagram story viewer