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