Drag&Drop с моего UserControl

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Drag&Drop с моего UserControl

Сообщение Fedorfx » 15.09.2004 (Ср) 0:08

Всем привет. Хочу с своего UserControla перетащить линк на свой же класс. Но что то неполучается. Могу только между формами таскать обьекты а вот как дело до User Control доходит так курсорчик в бублик превращается и не генерится события DragAndDrop

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.09.2004 (Ср) 11:38

У тебя линк прямо на контроле напечатан, через UserControl.Print, или же все-таки сидит в лэйбле или типа того? Тогда разреши для этого контрола OLEDragMode, и будет тебе счастье...

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 15.09.2004 (Ср) 12:43

Честно говоря про OleDrag и не знал вообще.
Раз просто драг не подходит в моем случае то наверно надо использовать OleDrag.
Буду благодарен за примитивный примерчик.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 15.09.2004 (Ср) 15:01

Хм. Пример писать меня ломает, если честно, но вкратце концепция такова:
1. Ставишь у исходного контрола OLEDragMode = vbManual. После этого он может работать как DnD Source. Соотв-но, бублика при начале перетаскивания у тебя не будет.
2. Берешь свой контрол назначения и выставляешь ему OLEDropMode - а вот тут надо смотреть. Я бы попробовал поставить ему vbAutomatic и посмотрел бы, устраивает меня результат или нет. Если нет, то тогда ставишь ему все тот же мануал и прописываешь след. события:
Src_OLEStartDrag - в передаваемый объект DataObject или как он там засовываешь то, что тебе надо передать.
Dest_OLEDragOver - проверяешь, устраивает ли тебя содержимое того же объекта, но уже применительно к контролу назначения (тебе же могут перетащить не только из твоей программы, а вообще откуда угодно). Если нет - возвращаешь параметр Effect = vbEffectNone, и юзер получает бублик над контролом назначения.
Dest_OLEDragDrop - непосредственно отпускание кнопки мыши. Опять-таки проверяешь тип и содержимое дата-объекта, и если подходит, то вставляешь куда надо, иначе - отлуп.
Можно еще обработать получение фидбэка исходным контролом, но это реально нужно, если у тебя не копирование, а перемещение.

Вроде как все, в общем и целом...

Fedorfx
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 10.10.2002 (Чт) 0:14

Сообщение Fedorfx » 16.09.2004 (Чт) 0:04

Спасибо

С механизмом разобрался.
Только я понимаю что ссылку на обьект или вариантовский тип данных не передать????
Какие есть варианты для передачи ссылки на обьект???

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 16.09.2004 (Чт) 11:16

Хе. А в каком именно формате этап ссылка выводится юзеру - уж не в виде ли HEX-адреса? Вот что выводишь, то и передавай - больше чем уверен, что тебе хватит обычного текстового формата. Ну а принимающая сторона должна знать, как именно раскрутить это дело до реального class * ...


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 41

    TopList  
cron