Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS Main Plugin, MBS Win Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /Win/Drag and Drop/File Drag
This example is the version from Sun, 17th Mar 2012.
Project "File Drag.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
Class FileDragWindow Inherits Window
Control StaticText1 Inherits Label
ControlInstance StaticText1 Inherits Label
End Control
EventHandler Function MouseDown(X As Integer, Y As Integer) As Boolean
DragStarted = false
Return true
End EventHandler
EventHandler Sub MouseDrag(X As Integer, Y As Integer)
if DragStarted then Return
DragStarted = true // avoid a new drag if the user pressed Escape key and is still dragging
dropsource = new FileDragSource
dim file as FolderItem = createtestfile
dim files(-1) as FolderItem
files.Append file
dim data as new WinDataObjectMBS(files)
dim effect as integer = 0
dim result as integer = dropsource.DoDragDrop(data, dropsource.DROPEFFECT_COPY, effect)
End EventHandler
Function CreateTestFile() As FolderItem
dim logo as Picture = logoMBS(100)
dim file as FolderItem = SpecialFolder.Temporary.Child("test.jpg")
file.SaveAsJPEG logo
Return file
End Function
Property DragStarted As Boolean
Property dropsource As FileDragSource
End Class
Class FileDragSource Inherits WindowsDragSourceMBS
EventHandler Function GiveFeedback(Effect as integer) As integer
Return DRAGDROP_S_USEDEFAULTCURSORS
End EventHandler
EventHandler Function QueryContinueDrag(EscapePressed as boolean, KeyState as integer) As integer
if EscapePressed then
Return DRAGDROP_S_CANCEL
end if
if Bitwise.BitAnd(KeyState, MK_LBUTTON)=0 then
return DRAGDROP_S_DROP
end if
Return S_OK
End EventHandler
End Class
End Project
See also:
- /Win/Drag and Drop/Attachment Drop from Outlook
- /Win/Drag and Drop/File Drag Multi
- /Win/Drag and Drop/File Drop
- /Win/Drag and Drop/Folder Drag
- /Win/Drag and Drop/Picture Drag
- /Win/Drag and Drop/Picture Drag with Mask
- /Win/Drag and Drop/Picture Drop
- /Win/Drag and Drop/Picture Drop on control
- /Win/Drag and Drop/Text Drag
- /Win/Drag and Drop/Text Drop
The items on this page are in the following plugins: MBS Win Plugin.