Tree View and DragDrop

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

Tree View and DragDrop

Сообщение Zedder » 06.06.2003 (Пт) 22:07

Народ! Два вопроса для очень умных:

1. Как при событии DragOver на TreeView подсвечивать
элементы, над которыми проходит курсор.
(типа так, как это делается в проводнике)?

2. Как из ListView на форме, который отображает список файлов,
перекинуть DragDrop в проводник файл/группу файлов.
Что-то надо передать объекту Data, но что?
Принять из проводника строку с путем к файлу получается.

Буду благодарен любой информации или примеру.
Заранее спасибо.)?

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 09.06.2003 (Пн) 7:18

Q: Как при событии DragOver на TreeView подсвечивать элементы, над которыми проходит курсор. (типа так, как это делается в проводнике)?

A: Для этого есть свойство DropHighlight. Как правило, оно устанавливается через HitTest метод.
Код: Выделить всё
Private Sub TreeView_OLEDragOver(...
  ...
  If (State And vbLeave) = vbLeave Then
    ' покидаем TreeView
    Set TreeView.DropHighlight = Nothing
    Effect = vbDropEffectNone
  Else
    If Effect <> vbDropEffectNone Then
      Set TreeView.DropHighlight = ctlCldata.HitTest(x, y)
      If TreeView.DropHighlight Is Nothing Then
        Effect = vbDropEffectNone
      End If
      ...
    End If
  End If
  ...
End Sub


Q: Как из ListView на форме, который отображает список файлов, перекинуть DragDrop в проводник файл/группу файлов. Что-то надо передать объекту Data, но что?

A: Для этого служит специальный формат vbCFFiles. Его можно установить двояко - или сразу, или по требованию.

Сразу:
Код: Выделить всё
Private Sub TreeView_OLEStartDrag(...
  ...
  Call Data.Clear
  Call Data.SetData(, vbCFFiles)
    Call Data.Files.Add("DraggedFile1") ' можно и циклом
    Call Data.Files.Add("DraggedFile2")
    Call Data.Files.Add("DraggedFile3")
    ...
End Sub


По требованию
Код: Выделить всё
Private Sub TreeView_OLEStartDrag(...
  ...
  Call Data.Clear
  Call Data.SetData(, vbCFFiles)
  ...
End Sub

Private Sub TreeView_OLESetData(...
  If DataFormat = vbCFFiles Then
    Call Data.Files.Add("DraggedFile1") ' можно и циклом
    Call Data.Files.Add("DraggedFile2")
    Call Data.Files.Add("DraggedFile3")
    ...
  End If
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.06.2003 (Пт) 18:29

А у меня чёто OLEDragOver не генериться.
В чём фишка?
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 18:41

Sebas писал(а):А у меня чёто OLEDragOver не генериться.
В чём фишка?

если мне склероз не изменяет, свойство OLEDragMode должно быть Auto тогда контрол сам будет события Drag'n'Drop обрабатывать а тебе будет сообщать об этом
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.06.2003 (Пт) 18:49

Стоит!
Не пашет(((
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 18:52

Sebas писал(а):Стоит!
Не пашет(((

и менять естсественно пробовал...
хотя наврал я... вот щас смотрю код и свойства TreeView - Manual должно быть...
на старом форуме посмотрите, я там как-то оставлял пример (и не я один) по драгндропу в TreeView
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 20.06.2003 (Пт) 19:46

Вообщем лох я!
вместо OLEDragOver - DragOver обрабатывал!

Спасибо!
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 20.06.2003 (Пт) 19:51

:D :wink:
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC


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

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

Сейчас этот форум просматривают: AhrefsBot и гости: 62

    TopList