powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова Treeview
14 сообщений из 39, страница 2 из 2
Снова Treeview
    #40080526
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем пока склоняюсь к предложению _Michelle, что -то похожее уже работает.
Sdku, вы не поняли. При установлении галочки в чекбокс в зависимости от некого условия или происходит изменение данных в таблице, или ничего не происходит, и галочку надо убрать. Почему так - долго объяснять - мне так удобно. Если есть какие-то принципиальные возражения против такого использования чекбокса, можно обсудить
...
Рейтинг: 0 / 0
Снова Treeview
    #40080527
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, и спасибо всем за помощь!
...
Рейтинг: 0 / 0
Снова Treeview
    #40080536
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
__Michelle
Если ставить/снимать галки клавишей Space?
нет, если мышк нажали, а потм не отпуская вывели с дерева. Если есть вероятность события, то оно произойдёт.

Ага...
Проверила.
У меня получилось, что в этом случае MouseUp все же возникает, а вот NodeCheck - как раз нет.
Но если это так, то и пример по ссылке в такой ситуации не сработает,
так как ни включения таймера не произойдет, ни инициализации публичной переменной CheckedNode.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080550
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут - https://coderoad.ru/23365961/Настройка-Проверена-На-Событии-NodeCheck
"бороли" ту же проблему, и пишут, что чепез ВинАПИ справились
... но у меня, почему-то, решение оттуда не сработало

навсякий, "стенд" во вложении
...
Рейтинг: 0 / 0
Снова Treeview
    #40080564
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
... но у меня, почему-то, решение оттуда не сработало


так сработало
ноды 1.* при установке в True будут сбрасываться в False
Код: vbnet
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.
56.
57.
58.
Option Compare Database
Option Explicit

Private WithEvents tv As MSComctlLib.TreeView

Private Const TVS_CHECKBOXES As Long = &H100
Private Const GWL_STYLE As Long = (-16)
Private Const TVS_HASLINES As Long = 2
Private Const TV_FIRST As Long = &H1100
Private Const TVM_SETBKCOLOR As Long = (TV_FIRST + 29)

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
     
Private Sub SetTVCheckboxStyle(pobjTV As TreeView)

    Dim lngCurStyle As Long
    Dim lngResult   As Long

    ' === Set the Checkbox style of the TreeView ===
    ' As advised by Microsoft, due to a bug in the TreeView control,
    ' set the Checkbox style of the TreeView by using the following
    ' API calls, rather than simply setting the "Checkboxes" property
    ' to True ...
    lngCurStyle = GetWindowLong(pobjTV.hwnd, GWL_STYLE)
    lngResult = SetWindowLong(pobjTV.hwnd, GWL_STYLE, _
                              lngCurStyle Or TVS_CHECKBOXES)

End Sub

Private Sub Form_Load()
    Dim tvnTemp As Object
    
    Set tv = TreeView0.Object
    
    SetTVCheckboxStyle tv
    
    Set tvnTemp = tv.Nodes.Add(, , "n1", "1")
    tvnTemp.Expanded = True
    Set tvnTemp = tv.Nodes.Add(, , "n2", "2")
    tvnTemp.Expanded = True
    
    Set tvnTemp = tv.Nodes.Add("n1", 4, "n1.1", "1.1")
    Set tvnTemp = tv.Nodes.Add("n1", 4, "n1.2", "1.2")
    Set tvnTemp = tv.Nodes.Add("n1", 4, "n1.3", "1.3")
    
    Set tvnTemp = tv.Nodes.Add("n2", 4, "n2.1", "2.1")
    Set tvnTemp = tv.Nodes.Add("n2", 4, "n2.2", "2.2")
    Set tvnTemp = tv.Nodes.Add("n2", 4, "n2.3", "2.3")
    
End Sub

Private Sub tv_NodeClick(ByVal Node As MSComctlLib.Node)
    If Node.Key Like "n1.*" Then
        Node.Checked = False
    End If
End Sub


а суть проблемы - баг в интерфейсе настройки свойств компонента (сказано в комменте процедуры SetTVCheckboxStyle)
т.е. нельзя устанавливать свойство "Checkboxes" через эту форму - 22341115
а нужно его устанавливать программно
...
Рейтинг: 0 / 0
Снова Treeview
    #40080566
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
тут - https://coderoad.ru/23365961/Настройка-Проверена-На-Событии-NodeCheck
"бороли" ту же проблему, и пишут, что чепез ВинАПИ справились
... но у меня, почему-то, решение оттуда не сработало

навсякий, "стенд" во вложении

Добавлена форма FF.
Без АПИ. Работает.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080569
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
"бороли" ту же проблему, и пишут, что чепез ВинАПИ справились
... но у меня, почему-то, решение оттуда не сработало
ЕМНИП, это для рисования своих чекбоксов, не дефолтных... Давненько я рисовал свои, с другими чекбоксами (кроме галочки были Null - с крестиком и такие же с восклицательным знаком)
...
Рейтинг: 0 / 0
Снова Treeview
    #40080606
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311,
решил тряхнуть стариной...
в примере просто не даёт сменить состояние чекбокса. Ни с мыша, ни с клавиатуры.
Условие можно прописать
...
Рейтинг: 0 / 0
Снова Treeview
    #40080607
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle
Добавлена форма FF.
Без АПИ. Работает.

__Michelle, плохо работает. Нажать на чекбоксе и сдвинуть мышь с контрола не отпуская кнопки - состояние изменится, проверки не произошло и отмены тоже.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080617
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

С этим я ведь сразу согласилась - что, если основываться на событии NodeCheck, то при таком сдвиге это событие не произойдет и конструкция не сработает.
Да, еще раз соглашусь - в случае, когда мышью будут возить, не отпуская кнопку, не получится.

Но по той же самой причине и вот это не сработает.
Панург
Serg197311, 406985

Я ведь уже так и написала раньше.
__Michelle
... в этом случае MouseUp все же возникает, а вот NodeCheck - как раз нет.
Но если это так, то и пример по ссылке в такой ситуации не сработает,
так как ни включения таймера не произойдет, ни инициализации публичной переменной CheckedNode.

Не так разве?
...
Рейтинг: 0 / 0
Снова Treeview
    #40080620
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

Новый пример посмотрю потом.
Сейчас с планшета.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080637
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle
С этим я ведь сразу согласилась
тут я проверил на практике. И писал больше для ТС и тех кто захочет воспользоваться позже.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080638
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle
Но по той же самой причине и вот это не сработает.
Панург
Serg197311, 406985
Тут, как говорится, мопед не мой я только дал объяву. Интересность того пример в том, что там показано невозможность изменения в событии NodeCheck и предложен таймер.
Можно конечно и перехватывать события дерева, но...
...
Рейтинг: 0 / 0
Снова Treeview
    #40080664
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

Посмотрела новый пример.

Спасибо за напоминание о .HitTest(x, y).
Интересный метод.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова Treeview
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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