[Overview][Constants][Types][Classes][Procedures and functions][Variables][Index] | Reference for unit 'Controls' (#lcl)

# TDragObject

[Properties (by Name)] [Methods (by Name)] [Events (by Name)]

Base class for managing drag operations and feedback.

## Declaration

Source position: controls.pp line 349

`type TDragObject = class`
`protected`
`procedure EndDrag(); virtual;` |  | Called when a dragging operation ends.
`function GetDragImages; virtual;` |  | Returns a list of images for dragging.
`function GetDragCursor(); virtual;` |  | Returns the dragging cursor type.
`public`
`constructor Create(); virtual;` |  | Remembers the dragged control.
`constructor AutoCreate();` |  | Special constructor, enforcing the destruction of the object at the end of the dragging operation.
`procedure HideDragImage; virtual;` |  | Hides the drag image
`procedure ShowDragImage; virtual;` |  | Shows the drag image
`property AlwaysShowDragImages: Boolean; [rw]` |  | Should the image of dragged objects always be shown?
`property AutoCreated: Boolean; [r]` |  | Was the drag object created automatically?
`property AutoFree: Boolean; [r]` |  | Indicates whether the object shall be destroyed at the end of the dragging operation.
`property Control: TControl; [rw]` |  | The control that is dragged (source).
`property DragPos: TPoint; [rw]` |  | Mouse position in screen coordinates.
`property DragTarget: TControl; [rw]` |  | The control to which the current object is dragged (target).
`property DragTargetPos: TPoint; [rw]` |  | Mouse position in client coordinates of the DragTarget (site)
`property Dropped: Boolean; [r]` |  | Indicates whether the drag object has been dropped yet.
`end;`

## Inheritance

`TDragObject` |  | Base class for managing drag operations and feedback.
`TObject`

## Description

Every dragging operation has an associated DragObject, holding references to the source and target controls, and other parameters for the customization of the visual user feedback.

A default DragObject is created automatically when a dragging operation starts, and is destroyed when the operation has ended, so that you must not take special care on it. But an application can provide a customized DragObject in the TControl.OnStartDrag or TControl.OnStartDock handlers of the source control (being dragged).

TDragObject is the ancestor of an whole tree of dragging objects, with the main branches supporting either drag-drop or dock-drop operations. The type of the operation is determined from the TControl.DragKind property of the source control. In contrast to the Delphi implementation, Lazarus has moved a couple of methods into the drag performers, so that these are no more available for customization.

A Lazarus DragObject mainly supplies the cursor and images, used in visual user feedback. Drag-drop operations typically signal acceptance of an possible drop by variations of the mouse cursor, and optionally can attach to it shapes of the dragged object(s). Dock-drop operations instead show a docking rectangle, that snaps to possible target locations when the mouse moves over docksites.

[entire review DoDi 2010-02-16]

## See also

TDragControlObject |  | A drag object for dragging a control.
TDragDockObject |  |

The latest version of this document can be found at lazarus-ccr.sourceforge.net.