| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
| Спасибо ребята. Разобрался! Всем спасибо!!! |