Файл: ...\Samples\Solution\Forms\Ddrop.scx
Этот пример показывает, как реализовать операции drag and drop. Одна страница на форме показывает ручное перетаскивание элементов управления вызовом метода Drag. Явный вызов метода Drag позволяет обрабатывать код события Click элемента управления. Другая страница показывает применение значения Automatic свойства DragMode, что позволяет начинать Drag and Drop операцию автоматически, когда пользователь нажмет кнопку мыши на элементе управления.
Перемещение элемента Command Button
В событии MouseMove элемента cmdDrop, если нажата левая кнопка мыши, находим растаяние от указателя мыши к верхнему и левому краю кнопки, и начинаем операцию перетаскивания.
![]() | |
---|---|
LPARAMETERS nButton, nShift, nXCoord, nYCoord IF nButton = 1 && Left button THISFORM.XOffset = nXCoord – THIS.Left THISFORM.YOffset = nYCoord - THIS.Top THIS.Drag ENDIF |
В событии DragDrop страницы, на которой находится кнопка, меняем положение этой кнопки.
![]() | |
---|---|
oSource.Left = nXCoord - THISFORM.XOffset oSource.Top = nYCoord - THISFORM.Yoffset |
Изменение цвета элемента Shape
Значение свойства DragMode цветного квадрата на странице Change Colors формы установлено в 1 – Automatic. Как только пользователь нажмет кнопку мыши на квадрате, начнется операция перемещения. Любой код в событии Click квадрата никогда не будет выполнен.
Код в событии DragDrop круга изменяет значение его свойства BackColor в такое же, как и в перемещаемого элемента.
![]() | |
---|---|
LPARAMETERS oSource, nXCoord, nYCoord THIS.BackColor = oSource.BackColor |