DoDragDrop(
Data: Variant;
AllowedEffects: DragDropEffects;
[Immediate: Boolean = True;]
[Format: DragDropFormat = 0]);
Data. Параметр, определяющий перетаскиваемый объект;
AllowedEffects. Параметр, определяющий вид применяемого Drag&Drop эффекта;
Immediate. Необязательный параметр, определяющий, когда начнется операция перетаскивания объекта. По умолчанию в качестве значения параметра передается значение True, при этом операция перетаскивания начинается сразу. Если в качестве значения параметра передать значение False, то операция перетаскивания начнется после смещения указателя мыши на определенное расстояние. Расстояние обусловлено размерами прямоугольника, отцентрированного в точке, где была нажата кнопка мыши. Ширина и высота прямоугольника соответствуют системным значениям, которые хранятся в реестре Windows;
Format. Необязательный параметр, определяющий, в каком формате будут передаваться данные при перетаскивании. Актуально при работе с навигатором объектов. Если в качестве значения параметра передается DragDropFormat.MetabaseObjectList, то при передаче в качестве параметра Data массива с описаниями объектов, навигатором объектов данный массив будет восприниматься как коллекция соответствующих объектов репозитория и обрабатываться соответствующим образом (ни одна клавиша не зажата - перемещение; зажата клавиша CTRL - копирование; зажата клавиша ALT - создание ярлыка).
Метод DoDragDrop позволяет начать операцию перетаскивания.
Для выполнения примера предполагается наличие формы и расположенного на ней компонента TreeList с наименованием «TreeList1». Для компонента «TreeList1» свойству AllowDrag установлено значение True.
Class TestForm: Form
TreeList1: TreeList;
Sub TestFormOnCreate(Sender: Object; Args: IEventArgs);
Var
MB: IMetabase;
MDescs: IMetabaseObjectDescriptors;
MDesc: IMetabaseObjectDescriptor;
Nodes: ITreeListNodes;
Node: ITreeListNode;
i: Integer;
Begin
MB := MetabaseClass.Active;
MDescs := MB.Root.Children;
Nodes := TreeList1.Nodes;
For i := 1 To 10 Do
MDesc := MDescs.Item(i);
Node := Nodes.Add(Null, MDesc.Id);
Node.Data := MDesc;
End For;
End Sub TestFormOnCreate;
Sub TreeList1OnBeginDrag(Sender: Object; Args: IBeginDragEventArgs);
Var
Obj: Array Of Variant;
Begin
Obj := New Variant[1];
Obj[0] := TreeList1.Selected.Data;
TreeList1.DoDragDrop(Obj, DragDropEffects.None, True, DragDropFormat.MetabaseObjectList);
End Sub TreeList1OnBeginDrag;
End Class TestForm;
При инициализации формы в компоненте «TreeList1» будут созданы десять элементов. Элементы будут соответствовать первым десяти объектам репозитория. В свойстве Data элементов будет содержаться описание объектов. При перетаскивании выделенного элемента в навигатор объектов будет инициализироваться перетаскивание соответствующего объекта репозитория и обрабатываться навигатором соответствующим образом.
См. также: