powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ScrollBar в TreeView не реагирует на клики
20 сообщений из 20, страница 1 из 1
ScrollBar в TreeView не реагирует на клики
    #35614336
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клики на ползунке игнорируются.. Ощущение что TreeView становится enabled=false. Убрал все события, перенажимал все галки в свойствах.. Может быть есть какой контрол поверху и нажатие происходит на нем, а не на Bare? А как это узнать?
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35615621
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MouseDown тоже игнорируется?
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35615879
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, MouseDown игнорируется при любом клике кроме(!) правого..
Код: plaintext
1.
2.
Private Sub TreMR_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Stop
End Sub
Me.ActiveControl.Name дает имя TreeView

Еще - при нажатии и попытке переноса контрола он "тащится" весь по всей форме куда угодно.
Задача дерева в том, чтобы перетаскивать в него записи из соседнего ListView:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private Sub lvwSupply_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim DY As Long

   If Button =  2  Then
      lblHidden.Visible = True
      lblHidden = "¤"
      DY = TextHeight("A")
      lblHidden.Move lvwSupply.Left, lvwSupply.Top + y - DY /  2 , lvwSupply.Width, DY
      lblHidden.Drag
      lblHidden.Visible = False
   End If
End Sub
ListView и Lable пытался делать выключенными - ноль эффекта
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35615881
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
h7h2vCAntonariy, MouseDown игнорируется при любом клике кроме(!) правого..Забыл сказать, что событие срабатывает, только если кликнуть правой кнопкой в любую область контрола кроме самого ScrollBar`a
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35616509
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗадача дерева в том, чтобы перетаскивать в него записи из соседнего ListView:
Для этого нужно использовать совсем другие механизмы. Drag — это перетаскивание самого контрола.
Вот пример перетаскивания узла в одном и том же тривью:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
'в этом событии определяется узел, который будет перетаскиваться (lDragNode, объявленный на уровне формы) 
'это событие нужно переделать для листвью
Private Sub tvTree_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
    If Button =  1  Then
        Set lDragNode = tvTree.HitTest(x, Y)
    Else
        On Error Resume Next
        tvTree.HitTest(x, Y).Selected = True
        Set lDragNode = Nothing
    End If
End Sub

'начало перетаскивания, тоже переделать для listview
Private Sub tvTree_OLEStartDrag(Data As ComctlLib.DataObject, AllowedEffects As Long)
    If lDragNode Is Nothing Then
        AllowedEffects =  0  'отмена 
    Else
        Screen.MousePointer = vbCustom 'здесь можно задать иконку, которая будет отображаться при перетаскивании вместо стандартного курсора (не обязательно)
        Screen.MouseIcon = lDragNode.CreateDragImage
    End If
End Sub

'это событие (тоже для listview) нужно для отображения своего курсора
Private Sub tvTree_OLEGiveFeedback(Effect As Long, DefaultCursors As Boolean)
    DefaultCursors = False
End Sub

'момент дропа, оставить как есть
Private Sub tvTree_OLEDragDrop(Data As ComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, Y As Single)
Dim n As Node, lNode As Node
Dim np As NODE_PARAMS
Dim bExp As Boolean

    On Error GoTo errh
    Set n = tvTree.HitTest(x, Y)
    If Not n Is Nothing Then
        If n.Child Is Nothing Then
            Set lDragNode.Parent = n
        Else
            np = GetNodeParams(lDragNode) 'всякие параметры, которые были перетащены и которые будут добавлены через две строчки
            bExp = lDragNode.Expanded
            tvTree.Nodes.Remove lDragNode.Index
            Set lNode = tvTree.Nodes.Add(n.Child, tvwLast, np.Key, np.Text, np.Image)
            lNode.Selected = True
            lNode.Expanded = bExp
        End If
        RaiseEvent MoveNode(lDragNode, n)
    End If
errh:
End Sub

'восстановление стандартных курсоров
'скорее всего тоже переделать для listview, но может и нет
Private Sub tvTree_OLECompleteDrag(Effect As Long)
    Screen.MousePointer = vbDefault
End Sub
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35618537
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Для этого нужно использовать совсем другие механизмы. Drag — это перетаскивание самого контрола.
Виноват, не достаточно ясно объяснил суть процесса...
Человек жмет правой кнопкой на строке ListView и пытается ее тащить - на том месте, где он нажал, мы рисуем Label с размерами нажатой строки и тащим уже ее (для визуализации процесса). Дальше происходит событие
Код: plaintext
Private Sub treMR_OLEDragDrop(Data As MSComctlLib.DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Single, y As Single)
где и обрабатывается момент окончания перетаскивания.

Проблема остается.. При клике на дерево - скроллбар не движется, а при клике и попытке тащить сам TreeView - он непонятным образом тащится куда угодно. Будто метод Drag вызывается у него самого...
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35618768
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ясней не стало (особенно зачем создавать Label, если можно создать курсор), но может это все-таки пригодится.
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35619586
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, спасибо за файлик. Как правильно пользоваться перетаскиванием я научился еще из первого вашего примера. Только вот проблема похоже вообще не в этом. Прикладываю тестовый проект с одним контролом на форме и одним событием. Подскажите пож-лста - как все-таки сдвинуть с места этот.. ползунок..
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35619613
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35619931
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем там выставлен DragMode=Automatic? В этом режиме контрол не будет реагировать на раздражители.
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35620022
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА зачем там выставлен DragMode=Automatic? В этом режиме контрол не будет реагировать на раздражители.Ну это не суть.. Подскажите пжлста как заставить ScrollBar реагировать на клики. Переключение вышеназванного флага никак не решает проблему..
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35620190
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем? Спрашиваю потому, что большая часть ваших движений была не в кассу. Может и заставлять не надо.
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35620245
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyА зачем? Спрашиваю потому, что большая часть ваших движений была не в кассу. Может и заставлять не надо.Смысл сообщения не понял...

Зачем ползунок двигать? - Затем что текст узла дерева не влезает в его видимую область
Насчет движений не в кассу - это может быть. Я просто предположил что раз Дерево целиком почему то тащится свободно по форме - то это как-то связано с тем, как я перекидываю в него элементы из соседнего ListView. Метод Drag где-то шалит..
Потом я насколько возможно упростил проект - оставил только один контрол на форме. Никаких событий связанных с перетаскиванием нет.

Мне просто непонятно - Почему игнорируются клики на полосе прокрутки дерева?
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35620591
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Drag и DragMode вообще не в кассу — повторюсь, они для перетаскивания контрола по форме, и больше ни для чего. Выкиньте все упоминания о Drag, а DragMode везде выставьте в manual.

авторЗачем ползунок двигать? - Затем что текст узла дерева не влезает в его видимую областьНу и что, что не влезает. Какое это имеет значение при OLE-перетаскивании?

авторПочему игнорируются клики на полосе прокрутки дерева?Потому что клики обрабатываются полосой прокрутки. Уведомление о скроллировании вытащить можно через сабклассинг (это ключевое слово для поиска), но, опять же, зачем это нужно в контексте перетаскивания?
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35620869
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy, я еще раз дико извиняюсь, если ввел вас в заблуждение касательно темы вопроса.
Мне просто непонятно - почему игнорируются клики на полосе прокрутки, и только лишь. Вопросов про OLE перетаскивание у меня нету.авторПотому что клики обрабатываются полосой прокрутки. Уведомление о скроллировании вытащить можно через сабклассинг (это ключевое слово для поиска)А в моем случае что происходит? Клики не обрабатываются полосой прокрутки?
Разве перестаскивание ползунка мышкой является чем-то нестандартным - требующим применения сабклассинга..
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35621575
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА в моем случае что происходит? Клики не обрабатываются полосой прокрутки? Обрабатываются.
авторРазве перестаскивание ползунка мышкой является чем-то нестандартным - требующим применения сабклассинга..
Как раз наоборот, настолько стандартное, что его подробности не стали выносить в объектную модель.
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35623354
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyавторА в моем случае что происходит? Клики не обрабатываются полосой прокрутки? Обрабатываются.Тогда почему она не двигается?
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35623382
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бл*, сколько повторять можно? Потому что у вас зачем-то включен DragMode=Automatic.
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35623417
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyБл*, сколько повторять можно? Потому что у вас зачем-то включен DragMode=Automatic.Еб**й н*х.
Теперь ясно - я оказывается не туда глядел; смотрел Property Page контрола, думал имеется ввиду тот DragMode..
...
Рейтинг: 0 / 0
ScrollBar в TreeView не реагирует на клики
    #35623455
h7h2vC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ScrollBar в TreeView не реагирует на клики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]