DragDrop est un moyen rapide de faire fonctionner Windows. En tant que développeur basé sur Windows
Delphi prend également en charge les opérations de glisser-déposer, et la fonction de glisser-déposer du système d'application est très pratique, ce qui reflète vraiment le
La puissance et la commodité de Delphi.
Tous les commandes fournies par Delphi (Control, qui peuvent obtenir la mise au point d'entrée) prennent en charge les opérations de glisser-déposer et ont
Les propriétés de glisser-déposer correspondantes, les événements de glisser-déposer et les méthodes de glisser-déposer. Ensuite, nous introduirons d'abord le support de glisser-déposer du contrôle, puis donnerons le
Étapes générales et exemples d'application de l'envoi d'opérations de glisser-déposer.
9.1 Prise en charge des contrôles pour les contrôles
Dans les opérations de traînée et de dépôt, les contrôles peuvent être divisés en deux catégories: contrôle de la source et contrôle cible. La plupart des contrôles peuvent être utilisés comme commandes source
Peut également être utilisé comme contrôle cible. Mais il existe également des contrôles qui ne peuvent soutenir que l'un d'eux.
9.1.1 Propriétés de traînée et de dépôt
Il y a deux principales propriétés de glisser-déposer:
● DragMode: mode glisser
Ils sont tous définis dans le contrôle source de glisser-déposer. DragMode contrôle l'utilisateur lorsque vous appuyez sur le contrôle pendant le temps d'exécution
Comment le contrôle réagit-il lorsque la souris est en baisse. Si DragMode est défini sur Dmautomatic, alors lorsque l'utilisateur appuie sur la souris sur le contrôle
DragMode démarre automatiquement;
Pour déterminer si une traînée peut démarrer.
DragCursor est utilisé pour sélectionner le curseur affiché lors de la gueule de bois.
Les spécifications d'interface qui sont courantes dans le processus de programmation doivent être respectées par les développeurs. Mais parfois à des fins spécifiques,
Les développeurs peuvent également attribuer leur propre curseur à DragCursor.
9.1.2 Événement de glisser-déposer
Il y a trois principaux événements de glisser-déposer:
● Ondragover: inspirer lors de la traînée
● ondragdrop: inspirer lors de la traînée et de la chute
● OneendDrop: Inspire lorsque la traînée se termine
Les deux premiers événements sont réagis par le contrôle cible, et le second est répondu par le contrôle de la source.
La fonction principale de l'événement Ondragover est de déterminer si le contrôle est acceptable lorsque l'utilisateur laisse tomber la traînée en place.
Ses paramètres incluent:
Source: Tobject; {Contrôle de la source} x, y: entier;
État: TdragState;
TdragState est un type d'énumération qui représente la relation entre les éléments de glisser-déposer et les contrôles cibles.
type tdragState = (dsdragesenter, dsdragleave, dsdragmove);
La signification des différentes valeurs est la suivante:
Tableau 9.1 La valeur et la signification de DragState
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
Valoriser le sens
Ui
DSDRAGENTER FRAGEZ L'objet dans un contrôle qui permet de supprimer l'objet traîné. est l'état par défaut.
Dsdragleave traîne l'objet loin d'un contrôle qui permet de supprimer l'objet de glisser.
L'objet DSDragMove Drag se déplace dans un contrôle qui permet de supprimer l'objet glisser.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━
L'utilisateur peut utiliser les paramètres fournis pour déterminer si la traînée supprimée est acceptable, comme:
● Type de contrôle de la source du juge:
Accepter: = la source est tlabel;
● Objet de contrôle de la source du juge:
Accepter: = (source = tabset1);
● Position du juge du curseur:
Voir les routines dans (9.2), (9.3).
● Statut de traînée de juge:
Si (source est tlabel) et (state = dsdragmove) alors
begin source.dragicon: = 'new.ico';
fin
autre
Accepter: = false;
Lorsque l'accept = true, le contrôle cible peut répondre à l'événement Ondragdrop, qui est utilisé pour déterminer que le programme après la traînée est supprimé
Comment y faire face.
Les paramètres du processus de traitement des événements de l'ondragdrop incluent le contrôle source et la position du curseur. Ces informations peuvent être utilisées pour le traitement
Confirmation.
L'événement OneNndDrag est répondu par le contrôle de la source une fois l'opération de traînée terminée, et est utilisée par le contrôle de la source pour effectuer
traiter avec. La fin de l'opération de traînée comprend à la fois le glisser-déposer en étant accepté, et l'utilisateur le libère sur un contrôle qui ne peut pas être supprimé.
Mettez la souris. Les paramètres de ce processus de traitement d'événements incluent le contrôle cible (cible) et les coordonnées de la position de chute. si
Target = NIL, signifie que l'élément traîné n'est accepté par aucun contrôle.
Dans l'opération de copie de glisser-déménagement, glisser-déménagement introduit dans la section 3, si l'opération est réussie, la zone de liste de fichiers sera répertoriée ci-dessous.
Le contenu affiché doit être mis à jour. Le programme suivant est utilisé pour implémenter cette fonction.
Procédure tfmform.fileListetendDrag (expéditeur, cible: tobject; x, y: entier);
Commencer
Si Target <> nil alors fileList.update;
fin;
En plus des trois événements décrits ci-dessus, il y a un autre événement OnMoudown, qui est également couramment utilisé pour les réponses de glisser-déposer.
Bien que OnMoudown ne soit pas un événement spécial de glisser-déposer, le début de la traînée en mode manuel est à ce sujet
Mis en œuvre pendant le processus de traitement des événements.
9.1.3 Méthode de glisser-déposer
Il y a trois façons de glisser et de tomber:
● Begindrag: Démarrez une traînée en mode manuel
● Enddrag:
Mettre fin à une traînée
● Faire glisser: détermine si un contrôle est en cours de traînée
Les trois méthodes sont utilisées par le contrôle source.
Lorsque DragMode est défini sur DMMANUAL, la glisser doit appeler la méthode Begindrag du contrôle pour démarrer.
Begindrag a immédiatement un paramètre booléen. Si le paramètre d'entrée est vrai, faites glisser pour démarrer immédiatement,
Changez vers les paramètres de DragCursor. Si le paramètre d'entrée est faux, jusqu'à ce que l'utilisateur déplace le curseur d'une certaine distance
(5 pixels) avant de changer le curseur et de commencer à glisser. Cela permet au contrôle d'accepter un événement OnClick sans commencer
Faites glisser l'opération.
La méthode Enddrag interdit l'état traîné d'un objet. Il a une chute de paramètre booléenne. Si Drop est réglé
Pour true, l'objet traîné est supprimé dans la position actuelle (si elle peut être acceptée est déterminée par le contrôle cible);
Si faux, le glisser est annulé en place.
Le programme suivant montre que la traînée est annulée lors de la traînée dans un panneau de configuration.
Procédure tform1.panel1dragover (expéditeur, source: tobject; x, y: entier;
État: tdragstate; var accepte: booléen);
Commencer
Accepter: = false;
if (source est tlabel) et (state = dsdrager) alors
(Source comme tlabel) .enddrag (false);
fin;
La méthode de rédaction détermine si un contrôle est traîné. Dans l'exemple suivant, lorsque l'utilisateur fait glisser une autre case à cocher
Lorsque la fenêtre se transforme en une couleur différente.
procédure tform1.formactivate (expéditeur: tobject);
Commencer
Checkbox1.DragMode: = dmautomatic;
Checkbox2.DragMode: = dmautomatic;
Checkbox3.DragMode: = dmautomatic;
fin;
Procédure tform1.formDragover (expéditeur, source: tobject; x, y: entier;
État: tdragstate; var accepte: booléen);
Commencer
Si Checkbox1.Dragging alors
Couleur: = Claqua;
Si Checkbox2.dragging alors
Couleur: = Clyellow;
Si Checkbox3.Dragging alors
Couleur: = CLLIME;
fin;