Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 3

Проверка всех CheckBox в TreeView

27.06.2016, 18:36. Показов 2416. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте всем.
Никак не могу придумать, как проверить все ли checkbox is checked в treeview .
Нужно, чтобы если в Node.Parent.Children коллекции отмечены или неотмечены ВСЕ чекбосы- Boolean = True.
И наоборот , если один или несколько checked/unchecked, то Boolean = False.
Пробовал с Do ... While , If ... Then ... Next , то синтаксис не тот , то компиллер не пропускает.
Если кто-то сможет пример или ссылку.
Спасибо.

Добавлено через 16 минут
Пробовал так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim i As Integer, nodx As Node
Set nodx = Node.Parent.Child
                Switch = nodx.Checked
                For i = 1 To Node.Parent.Children
               If Switch <> nodx.Checked Then Label7.Caption = "All" Else Label7.Caption = "Not All"
               
               
                MsgBox nodx.Text & nodx.Checked
               Switch = nodx.Checked
               Set nodx = nodx.Next
               Label4.Caption = Node.Text
               
                Next i
Не хочет.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.06.2016, 18:36
Ответы с готовыми решениями:

Помогите использовать CheckBox в TreeView !
Кто-нибудь покажите пожалуйста пример с использованием CheckBox в TreeView.... Напишите код или дайте ссылочку... И еще я тут...

Как прописать одно условие для всех CheckBox
Подскажите пожалуйста: у меня порядка 100 CheckBox, как прописать одно уловие для всех моих CheckBox. Вот мой код: Private Sub...

TreeView. Подскажите, как можно удалить всех children
TreeView. Подскажите, как можно удалить всех children у Selected Node

7
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 20:39
както так
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Private Sub TreeView1_NodeCheck(ByVal Node As VBCCR12.TvwNode)
    Dim vLoc
    On Error Resume Next
    Set vLoc = Node.Child.FirstSibling
    While Err.Number = 0
        vLoc.Checked = Node.Checked
        If Not vLoc.Child Is Nothing Then
            TreeView1_NodeCheck vLoc
        End If
        Err.Clear: Set vLoc = vLoc.NextSibling
    Wend
End Sub
1
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 20:44
В этом коде, в событии _NodeCheck Если отца чикнуть, то и все его дети тоже чикнуться
рекурсивный вызов, у меня из другой OCX TreeView но событие то же
Изображения
 
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 20:57
а вот нашел этот компонент во встроенных библиотеках..
Первую строчку только замени и фсё
Visual Basic
1
Private Sub TreeView1_NodeClick(ByVal Node As ComctlLib.Node)
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 3
27.06.2016, 21:08  [ТС]
Спасибо всем. Просто ступил.
Добавил ещё одну переменную :
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer, nodx As Node
Dim Switch As Boolean
Dim AllNodes As Boolean
     If Node.Children = 0 Then
          Set nodx = Node.Parent.Child
                Switch = nodx.Checked
                AllNodes = True
                
                    For i = 1 To Node.Parent.Children
                        If Switch <> nodx.Checked Then AllNodes = False
                        Switch = nodx.Checked
                        Set nodx = nodx.Next
                    Next i
                Node.Parent.Bold = AllNodes
      End If
End Sub
Если кому пригодится.
Работает.
Спасибо всем, кто ответил.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
27.06.2016, 21:09
Могу свой OCX скинуть которым я пользуюсь, там помимо других контролов есть более *модный* TreeView
только в настройках поставь CheckBoxes = True
Вложения
Тип файла: rar VBCCR12.rar (772.5 Кб, 19 просмотров)
0
0 / 0 / 0
Регистрация: 28.03.2016
Сообщений: 3
27.06.2016, 23:43  [ТС]
Спасибо, fever brain.Обязательно воспользуюсь.
Вообще-то, я пишу на 6.0 ну если .NET, так .NET ))
В общем вот что получилось, опять-же, если кому интересно:
Visual Basic
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
Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer, nodx As Node
     If Node.Children <> 0 Then 'If node has children
        Set nodx = Node.Child 'Catch first child
        For i = 1 To Node.Children 'Loop through each child
          nodx.Checked = Node.Checked 'Set as checked
          Set nodx = nodx.Next 'Catch next child
        Next 'Loop
      Else: AllChecked Node
      End If
End Sub
 
Private Sub AllChecked(Node As Node) 'Child node
Dim i As Integer, nodx As Node
Dim Switch As Boolean
Dim AllNodes As Boolean
'If Node.Parent Is Nothing Then MsgBox "root"
Set nodx = Node.Parent.Child
                Switch = nodx.Checked
                AllNodes = True
                    For i = 1 To Node.Parent.Children
                        If Switch <> nodx.Checked Then AllNodes = False
                        Switch = nodx.Checked
                        Set nodx = nodx.Next
                    Next i
                AllNodes = Not AllNodes
                Node.Parent.ForeColor = Abs(Int(AllNodes)) * vbRed
                Node.Parent.Bold = AllNodes
End Sub
Только это если нет children-ов внутри нодов, иначе бодяга получается.Пока не разобрался.
0
oh my god
 Аватар для fever brain
1456 / 796 / 161
Регистрация: 05.01.2016
Сообщений: 2,307
Записей в блоге: 8
28.06.2016, 08:00
Цитата Сообщение от caa2000 Посмотреть сообщение
Только это если нет children-ов внутри нодов, иначе бодяга получается.Пока не разобрался.
Ну дак, я тебе и показал алгоритм, парент просматривает своих чилдреннов и всем ставит чек+
при этом каждый чилдрен вызывает процедуру рекурсивно а в копии выполнения процедуры нижнего уровня, уже себя называет парэнтом и ищет чилдреннов у себя, при ошибке которая может возникнуть если у чилдренна нет других чилдренов
выход из копии процедуры и возврат к выполнению процедуры верхнего уровня
Это всё называется РЕКУРСИВНЫЙ вызов, по другому если делать то будет очень муторно

Добавлено через 5 минут
Ниже пример где я одним кликом могу отметить подчиненные объекты (всех дедушек оцов и их детей )
Изображения
   
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.06.2016, 08:00
Помогаю со студенческими работами здесь

Проверка всех Checkbox
На форме 5 чекбоксов. При нажатии на кнопку должна быть проверка, если ни на один Checkbox не нажали, то показывается сообщение. Как это...

CheckBox в TreeView [отслеживание и реакция checkbox]
Приветствую! Прошу помощи, на данный момент имеется такой код: procedure TForm6.FormShow(Sender: TObject); var I, X, Y: Integer; ...

Как одновременно поменять свойство value у checkbox с true на false для всех checkbox-ов, находящихся на одном листе?
Всем добрый день! Подскажите, пожалуйста, как одновременно поменять свойство value у checkbox с true на false для всех checkbox-ов,...

TreeView и CheckBox
Добрый вечер. У меня есть TreeView с включенным свойством CheckBoxex, получается как на первой картинке. Когда ставлю галочку...

Treeview checkbox
Помогите пожалуйста. Не совсем понимаю, как сделать из обычного древовидного списка, древовидный список с чекбоксами. &lt;html...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru