La méthode DataObject peut servir de transporteur de données lors de la programmation d’une opération de remorquage. Les méthodes du DataObject vous permettent de contrôler le processus de remorquage du début à la fin.
Figure : Glisser et déposer des éléments d’une liste à une autre
Tableau: Méthodes DataObject
Méthode | Description |
Clear | Supprime les données transférables d’un objet |
GetFormat | Renvoie 1 si les données transférées sont au format chaîne |
GetFromClipboard | Copie le contenu du presse-papiers dans un objet |
GetText | Renvoie une chaîne enveloppée dans un objet |
PutInClipboard | Déplace les données d’un objet vers le presse-papiers |
SetText | Copie une chaîne dans un objet |
StartDrag | Initialise une opération de remorquage. Les valeurs de retour valides sont les constantes suivantes: fmDropEffectNone, fmDropEffectCopy, fmDropEffectMove et fmDropEffectCopyOrMove |
Lors de l’encodage d’une opération de remorquage, il y a deux événements à gérer:
■ BeforeDragOver – généré pendant l’opération de remorquage;
■ BeforeDropOrPaste – généré juste avant l’insertion de l’objet.
Ainsi, pour montrer comment une opération de glissement peut être programmée, créez un formulaire, placez-y deux zone listes et tapez le code suivante :
Private sh As Integer Private idx As Integer Private Sub UserForm_Initialize() Dim i As Integer For i = 1 To 20 ListBox1.AddItem "Marché " & i Next End Sub Private Sub ListBox1_MouseMove(ByVal Button As _ Integer, ByVal Shift As Integer, ByVal X As _ Single, ByVal Y As Single) Dim dobj As DataObject If Button = xlPrimaryButton Then Set dobj = New DataObject Dim Effect As Integer dobj.SetText ListBox1.Value Effect = dobj.StartDrag idx = ListBox1.ListIndex sh = Shift End If End Sub Private Sub ListBox2_BeforeDragOver(ByVal Cancel As _ MSForms.ReturnBoolean, ByVal Data As _ MSForms.DataObject, ByVal X As Single, _ ByVal Y As Single, ByVal DragState As Long, _ ByVal Effect As MSForms.ReturnEffect, _ ByVal Shift As Integer) Cancel = True Effect = fmDropEffectCopyOrMove End Sub Private Sub ListBox2_BeforeDropOrPaste(ByVal _ Cancel As MSForms.ReturnBoolean, _ ByVal Action As Long, ByVal Data As _ MSForms.DataObject, ByVal X As Single, _ ByVal Y As Single, ByVal Effect As _ MSForms.ReturnEffect, ByVal Shift As Integer) Cancel = True Effect = fmDropEffectCopyOrMove ListBox2.AddItem Data.GetText If sh = 2 Then ListBox1.RemoveItem idx End If End Sub
Commentaires
■ L’événement MouseMove produit lorsque l’utilisateur déplace la souris. Sa syntaxe est Private Sub object_MouseMove( ByVal Button As fmButton,
ByVal Shift As fmShiftState, ByVal X As Single, ByVal Y As Single)
La syntaxe de l’événement MouseMove contient les parties suivantes :
Tableau: La syntaxe de l’événement MouseMove
Élément | Description |
Object | Obligatoire. Un objet valide. |
Index | Obligatoire. Index de la page ou de l’onglet dans un contrôle MultiPage ou TabStrip associé à cet événement. |
Button | Obligatoire. Valeur d’entier qui identifie l’état des boutons de souris. |
Shift | Obligatoire. Spécifie l’état des touches Maj, Ctrl et Alt. |
X, Y | Obligatoire. Position horizontale ou verticale, mesurée en points, par rapport au bord gauche ou supérieur du contrôle. |
■ L’instruction XlMouseButton indique le bouton de souris qui a été actionné.
Tableau 15.14: Les constantes de l ’instruction XlMouseButton
Nom | Valeur | Description |
XlNoButton | 0 | Aucun bouton. |
XlPrimaryButton | 1 | Le bouton principal (normalement, il s’agit du bouton de gauche). |
xlSecondaryButton | 2 | Le bouton secondaire (normalement, il s’agit du bouton de droite). |
■ L’événement BeforeDragOver se produit lorsqu’une opération glisser-déplacer est en cours. Sa syntaxe est :
Private Sub object _BeforeDragOver(ByVal Cancel As MSForms.ReturnBoolean, ByVal Data As DataObject, ByVal X As Single, ByVal Y As Single, ByVal DragState As fmDragState, ByVal Effect As MSForms.ReturnEffect, ByVal Shift As fmShiftState)
La syntaxe de l’événement BeforeDragOver contient les parties suivantes :
Tableau : La syntaxe de l’événement BeforeDragOver
Élément | Description |
Object | Obligatoire. Un objet valide. |
Index | Obligatoire. Index de la page dans un contrôle MultiPage que l’opération de glisser-déplacer affectera. |
Cancel | Obligatoire. État de l’événement. False indique que le contrôle doit gérer l’événement (valeur par défaut). True indique que l’application gère l’événement. |
Ctrl | Obligatoire. Contrôle déplacé par glissement. |
Données | Obligatoire. Données déplacées pendant une opération glisser-déplacer. Les données sont regroupées dans un objet DataObject. |
X, Y | Obligatoire. Coordonnées horizontales et verticales de la position du contrôle. Les deux coordonnées sont mesurées en points. X est mesuré à partir du bord gauche du contrôle, Y à partir du bord supérieur. |
DragState | Obligatoire. État de transition des données faisant l’objet d’une opération de glissement. |
Effect | Obligatoire. Opérations prises en charge par la source du déplacement. |
Shift | Obligatoire. Spécifie l’état de Maj, Ctrl et Alt. |
■ La méthode RemoveItem supprime un ou plusieurs éléments d’une zone de liste ou d’une zone de liste modifiable. Sa syntaxe est expression.RemoveItem (Index, nombre) ou expression représente un objet Contrôle.
Tableau:
Nom | Description |
Index | Numéro du premier élément à supprimer. Les valeurs autorisées sont comprises entre 1 et le nombre d’éléments de la liste (renvoyé par la propriété ListCount). |
Count | Nombre d’éléments à supprimer en commençant par l’élément Index. Si vous ne spécifiez pas cet argument, un seul élément est supprimé. Si le_nombre_ d’ index + dépasse le nombre d’éléments de la liste, tous les éléments de l’ index jusqu’à la fin de la liste sont supprimés sans erreur. |