On Drag Over
Code | Can be called by | Definition |
---|---|---|
21 | 4D Write Pro area - Button - Button Grid - Check Box - Dropdown list - Hierarchical List - Input - List Box - List Box Column - Picture Button - Picture Pop up menu - Plug-in Area - Progress Indicators - Radio Button - Ruler - Spinner - Splitter - Stepper - Tab control | Data could be dropped onto an object |
Description
The On Drag Over
event is repeatedly sent to the destination object when the mouse pointer is moved over the object. In response to this event, you usually:
- Get the data and signatures found in the pasteboard (via the
GET PASTEBOARD DATA
command). - Depending on the nature and type of data in the pasteboard, you accept or reject the drag and drop.
To accept the drag, the destination object method must return 0 (zero).
To reject the drag, the object method must return -1 (minus one).
During an On Drag Over
event, 4D treats the object method as a function. If no result is returned, 4D assumes that the drag is accepted.
If you accept the drag, the destination object is highlighted. If you reject the drag, the destination is not highlighted. Accepting the drag does not mean that the dragged data is going to be inserted into the destination object. It only means that if the mouse button was released at this point, the destination object would accept the dragged data and the On Drop
event would be fired.
If you do not process the On Drag Over
event for a droppable object, that object will be highlighted for all drag over operations, no matter what the nature and type of the dragged data.
The On Drag Over
event is the means by which you control the first phase of a drag-and-drop operation. Not only can you test whether the dragged data is of a type compatible with the destination object, and then accept or reject the drag; you can simultaneously notify the user of this fact, because 4D highlights (or not) the destination object, based on your decision.
The code handling an On Drag Over
event should be short and execute quickly, because that event is sent repeatedly to the current destination object, due to the movements of the mouse.
Example
//Destination object method
#DECLARE : Integer
If(Form event code=On Drag Over)
//returns 0 by default
...
If($DataType=Is picture)
return -1
End if
...
End if