powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова Treeview
39 сообщений из 39, показаны все 2 страниц
Снова Treeview
    #40080389
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Treeview на форме с чекбоксами
при попытке поставить в чекбокс галочку надо проверить некоторое условие и по результатам возможно выкинуть сообщение и галочку из чекбокса убрать. На событие checked стоит

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
     IF
               MsgBox ("   !")
              TRW1.SelectedItem.Checked = False
              TRW1.Requery
              TRW1.refresh
              Me.Refresh
    End if


Вроде все работает - только изменение на экране не отображается, галочка так и остается...
каким образом все-таки эту галочку убрать можно?
...
Рейтинг: 0 / 0
Снова Treeview
    #40080393
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
каким образом все-таки эту галочку убрать можно?

Может поможет ? Q7
...
Рейтинг: 0 / 0
Снова Treeview
    #40080405
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
Код: vbnet
1.
TRW1.SelectedItem

SelectedItem - не обязательно та нода, у которой ты ставишь чек ...
SelectedItem - это выбранная в дереве, та у которой лэйбл подсвечен
Serg197311
На событие checked стоит

Где ты "нашел" такое событие ?

Нода которой ставится чек - параметр у метода Treeview, NodeCheck
Код: vbnet
1.
Private Sub MyTreeview_NodeCheck(ByVal Node As Object)


вот для неё и нужно проверять / устанавливать
И никакие рефреши не понадобятся
...
Рейтинг: 0 / 0
Снова Treeview
    #40080408
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
На событие checked
а где это такое событие?
...
Рейтинг: 0 / 0
Снова Treeview
    #40080411
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
NodeCheck
не во всех версиях дерева такое событие есть...
...
Рейтинг: 0 / 0
Снова Treeview
    #40080412
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
court
NodeCheck
не во всех версиях дерева такое событие есть...
таа ладно ! )
Мы ж про МС-овский Treeview говорим ?
вот этот - MSComctlLib.TreeCtrl

В нём есть, и всегда было
То, что на вкладке "События", в "Свойства", его нет - это "да".
Нуу на то он и АктивХ ...
...
Рейтинг: 0 / 0
Снова Treeview
    #40080416
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не помогло
...
Рейтинг: 0 / 0
Снова Treeview
    #40080417
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311
не помогло
ты к какому месту прикладывал ? :)
...
Рейтинг: 0 / 0
Снова Treeview
    #40080418
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
таа ладно ! )
Мы ж про МС-овский Treeview говорим ?
ТС не уточнял версии и привёл событие которого нет в обоих версиях
Вот тебе и "таа ладно"
court
В нём есть, и всегда было
То, что на вкладке "События", в "Свойства", его нет - это "да".
Нуу на то он и АктивХ ...

На вкладка я не смотрю, я смотрю в Object Browser

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

да, сори, был не прав ... это 5.0 ?
...
Рейтинг: 0 / 0
Снова Treeview
    #40080431
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
это 5.0 ?
да
court
да, сори, был не прав
ок
...
Рейтинг: 0 / 0
Снова Treeview
    #40080443
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSComctlLib.TreeCtrl.2 это класс объекта в свойствах. А библиотеки подключены обе, и 5 и 6
...
Рейтинг: 0 / 0
Снова Treeview
    #40080444
Serg197311
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
court
Нода которой ставится чек - параметр у метода Treeview, NodeCheck
Код: vbnet
1.
Private Sub MyTreeview_NodeCheck(ByVal Node As Object)



И да - был не прав - это именно это событие, Nodecheck
Приношу извинения....
...
Рейтинг: 0 / 0
Снова Treeview
    #40080454
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Serg197311, 406985
...
Рейтинг: 0 / 0
Снова Treeview
    #40080492
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если без таймера?
Например, так:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Dim Nd As Node

Private Sub Tr_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Long, ByVal y As Long)
 If Not (Nd Is Nothing) Then
   Nd.Checked = False
 End If
End Sub

Private Sub Tr_NodeCheck(ByVal Node As Object)
 If .... Then
   Set Nd = Node
 Else
   Set Nd = Nothing
 End If
End Sub
...
Рейтинг: 0 / 0
Снова Treeview
    #40080496
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle
Код: vbnet
1.
Tr_MouseUp

может и не произойти... емнип
...
Рейтинг: 0 / 0
Снова Treeview
    #40080500
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
__Michelle
Код: vbnet
1.
Tr_MouseUp

может и не произойти... емнип

Если ставить/снимать галки клавишей Space?
Ну, да.
Маловероятный случай, конечно.

Но можно подстраховаться еще и проверкой в Tr_KeyUp.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080503
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
просмотрел топик и не понял следующее:
-на форме с Treeview имеется чекбокс
-при клике на некой ноде в форме отображается запись из таблицы, отобранная по какому-то критерию, задаваемому выбранной нодой-на этом роль Treeview заканчивается.Дальнейшая работа ведется с записью таблицы-источником формы.
Правильно ли я понял Вашу задачу?
почему в коде фигурирует TRW1(понял так,что это Treeview),а не Me.поле(я)???
и вообще какой-такой смысл в обновлении Treeview, при изменении(не удалении,не добавлении) записи в ТАБЛИЦЕ
или я чего-то не понимаю?
...
Рейтинг: 0 / 0
Снова Treeview
    #40080506
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
-на форме с Treeview имеется поле с чекбокс
нет, тут про Тривью с чекбоксами



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

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

Не Michelle, а __Michelle.

И в чем допиливание будет состоять?
...
Рейтинг: 0 / 0
Снова Treeview
    #40080514
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle,
__Michelle
И в чем допиливание будет состоять?
__Michelle
...Но можно подстраховаться еще и проверкой в Tr_KeyUp.
...
Рейтинг: 0 / 0
Снова Treeview
    #40080523
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michelle
Если ставить/снимать галки клавишей Space?
нет, если мышк нажали, а потм не отпуская вывели с дерева. Если есть вероятность события, то оно произойдёт.
...
Рейтинг: 0 / 0
Снова 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
39 сообщений из 39, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Снова Treeview
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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