Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > VB6 > Drag&Drop


Автор: Moppuk 2.2.2006, 17:49
Проблема такая... Хелп.
На форме есть Frame1. На него перетаскиваются картинки из listview...
Надо как-то сделать, чтобы эти картинки модно было продолжать перетаскивать на Frame1.
Программирую недавно. Запутался во всем. Ole, Drag, Drop, MouseUp, Down... Помогите плиз разобраться.
Если можно с примерами кода.

Автор: amt 3.2.2006, 20:51
Если мне не изменяет память то Frame выступает в роли контейнера. Таким образом чтобы картинку перемещать во фрейме она должна быть там изначально создана. По-моему так. А если ты создаешь объект на форме , а не на фрейме, то он привязывается именно к форме. Следовательно, либо надо отказаться от фрейма или сделать ее на всю форму и картинку изначально создавать на ней.

Автор: Moppuk 4.2.2006, 00:39
Ок, откажусь я от фрайма не вопрос.
Но проблема стоит та же... Как по форме таскать картинки (как на рабочем столе ярлыки).
Я что-то читал про MouseUp и Down но вот как это воплотить реально не понимаю и не могу разобраться.
Кто знает прошу помощи. Лучьше кодом...
Пример Form1
pic1
pic2
Можно их загрузать в Imageview чтобы у нее появился так называемый ключ...
Короче какие-нибудь варианты. Буду очень признателен... У кого какаие вопросы, тоже спрашивайте чем смогу, обязательно помогу!!!

Автор: amt 5.2.2006, 13:34
Под рукой исходника нет, но все достаточно просто.
Почитай здесь

--------------------------
События MouseDown и MouseUp
Если требуется более детальный анализ нажатия кнопки мыши, то следует
обрабатывать отдельно нажатие и отпускание кнопки мыши. После нажатия
кнопки мыши на активном элементе управления генерируется событие
MouseDown. При этом процедуре обработки этого события передаются четыре
параметра: Button, Shift, x и Y. Событие MouseUp функционирует аналогично
MouseDown, но наступает при отпускании кнопки мыши.
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single) Select Case
Button Case vbLeftButton
MsgBox "Нажата левая кнопка" Case
vbRightButton
MsgBox "Нажата правая кнопка" Case
vbMiddleButton
MsgBox "Нажата средняя кнопка" End
Select End Sub
Параметр Button определяет состояние кнопки мыши. Он может
принимать одно из следующих значений: vbLeftButton, vbRightButton или,
если имеется третья кнопка мыши, vbMiddleButton. Параметр Shift
позволяет определить, были ли нажаты клавиши [Shift] (vbShiftMask), [Ctrl]
(vbCtrlMask) и [Alt] (vbAltZMask) при нажатии или отпускании кнопки мыши.
Переменные X и Y содержат значения координат текущей позиции курсора
мыши на элементе управления.
Событие MouseMove
При перемещении мыши наступает множество событий MouseMove.
Процедуре обработки этого события передаются такие же переменные, как и
при обработке событий MouseUp и MouseDown. Аргумент Button позволяет
определить, какая кнопка мыши была нажата не только при обработке событий
MouseUp и MouseDown, но и при обработке события MouseMove. Таким образом,
можно узнать была ли нажата кнопка во время перемещения мыши.
Обрабатывая события MouseUp, MouseZDown и MouseMove, можно создать
простейшую программу рисования.
При нажатии левой кнопки мыши с помощью метода PSet ставится точка в
том месте формы, в котором в данный момент находится указатель мыши.
После этого курсор принимает форму перекрестия:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y
As Single)
If Button = vbLeftButton Then
Formi.MousePointer = vbCrosshair Forrol.PSet
(X,Y) End If End Sub
При перемещении мыши наступает последовательно несколько событий
MouseZMove. Если при перемещении была нажата левая кнопка мыши, то точки,
в которых эти события произошли, соединяются линией с помощью метода Line:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _
X As Single, Y As Single) If Button = vbLeftButton Then
Forml.Line Z (X, Y) End If
End Sub
При отпускании кнопки мыши курсор принимает первоначальный вид:
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
Formi.MousePointer = vbDefault End Sub
Этот небольшой пример демонстрирует возможности использования
событий мыши.
Последовательность событий
Последовательность генерации событий мыши зависит от типа
элемента управления, для которого эти события генерируются. Например,
для элементов управления ListBox и commandButton события наступают в
следующем порядке: MouseDown, Click, MouseZUp. Для FileListBox, Label или
PictureBox события наступают в другой последовательности: MouseDown,
MouseUp, Click. При двойном щелчке события происходят в
последовательности: MouseDown, MouseUp, Click, DblClick, MouseUp.

Тебе нужно обрабатывать три события MouseDown, MouseUp, MouseMove

Автор: cardinal 5.2.2006, 14:09
amt, используй в следующий раз теги для кода плиз, даже если код находится в цитируемом тексте...

Автор: amt 5.2.2006, 16:13
Прости, торопился.

Автор: Moppuk 7.2.2006, 23:29
Спасибо ребята. Разобрался! Всем спасибо!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)