Drag&Drop во внешнее приложение

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

Drag&Drop во внешнее приложение

Сообщение narg » 15.04.2010 (Чт) 12:00

Вобщем, информацию надо скидывать из дерева в произвольный лист Excel прямо целыми столбцами и делать это мышью. Воспользовался Drag&Drop. Когда перед дропом водишь мышью по листу, ячейки под указателем как бы выделяются (хотя это неправда), а как получить адрес этой целевой ячейки перед дропом я не знаю. Дело в том, что хотелось бы заставить указатель подсказывать пользователю правильную клетку, пока он не отпустил кнопку. Пока что я тупо смотрю ActiveCell после дропа и мне это совсем не нравится.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Drag&Drop во внешнее приложение

Сообщение Хакер » 15.04.2010 (Чт) 12:17

Откуда получить?
Из DS или DT?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Drag&Drop во внешнее приложение

Сообщение Antonariy » 15.04.2010 (Чт) 12:24

как получить адрес этой целевой ячейки перед дропом
Во время начала перетаскивания получить GetObject'ом ссылку на эксель, а в событии OLEGiveFeedback проверять ActiveCell, и если ячейка попадает в запрещенный диапазон, передавать в параметр Effect значение vbDropEffectNone, в любоим другом случае vbDropEffectCopy.
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Drag&Drop во внешнее приложение

Сообщение Antonariy » 15.04.2010 (Чт) 12:29

Хотя соврал, на Effect экселю наплевать.
Лучший способ понять что-то самому — объяснить это другому.

narg
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 21.07.2002 (Вс) 22:21

Re: Drag&Drop во внешнее приложение

Сообщение narg » 15.04.2010 (Чт) 14:07

Я тащу один из пунктов TreeView в совершенно посторонний экселевский лист.

Код: Выделить всё
Private Sub sp2_Tree_OLEStartDrag(Data As MSComctlLib.DataObject, AllowedEffects As Long)
Set EX = EXC.ExcelEniv.ActiveSheet'ссылка на эксэль
Data.Clear
Data.SetData sp2_Tree.SelectedItem.Text, vbCFText
AllowedEffects = vbDropEffectCopy
End Sub


Antonariy писал(а):в событии OLEGiveFeedback проверять ActiveCell

-не сильно понял как это сделать? Это событие в объекте-источнике и оно не даёт никакой информации о цели - только "могу-нимогу". Пока таскаю курсор по листу ActiveCell не меняется.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Drag&Drop во внешнее приложение

Сообщение Antonariy » 15.04.2010 (Чт) 14:22

Пока таскаю курсор по листу ActiveCell не меняется.
Точно, подсвеченная ячейка это не ActiveCell. Значит наверное никак.
Или сабклассить окно листа экселя (из vba) и использовать API.
Лучший способ понять что-то самому — объяснить это другому.

narg
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 106
Зарегистрирован: 21.07.2002 (Вс) 22:21

Re: Drag&Drop во внешнее приложение

Сообщение narg » 15.04.2010 (Чт) 14:37

Я не против API - наверное можно повесить на курсор всякий там Shell и перечитать заодно Эпплмана. Просто не хотелось из пушки по воробьям - ячейки в екселе не выделяются, но обводятся и наверное их как-нибудь попроще можно достать.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Drag&Drop во внешнее приложение

Сообщение Antonariy » 15.04.2010 (Чт) 14:51

Нельзя.
Лучший способ понять что-то самому — объяснить это другому.


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 61

    TopList