Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577

чекбоксы в ListView

11.09.2013, 03:04. Показов 3034. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как добавить чекбоксы в ListView, например как в торренте?
Тоесть папка рядом + и чекбокс, нажимаешь + открывается древо и у каждого элемента есть чекбокс.
Дальнейшую логику как делать сам пойму, мне хотяб 1 пример с добавлением в родителя и дочерние элементы)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.09.2013, 03:04
Ответы с готовыми решениями:

Чекбоксы
Здравствуйте! Помогите, пожалуйста! Есть список чекбоксов, который создается динамически.Как сделать, чтобы после нажатия на кнопку,...

чекбоксы
пишу программу мне нужно помочь с такой задачей: нужно при нажатий галочки "Подоконник"с нажатыми галочками...

чекбоксы
как сделать чтобы при нажатии на один чекбокс с другого бокса снималась отметка(если он был отмечен) и он ставал прозрачным и невозможным к...

22
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
11.09.2013, 04:25
Тебе ЭТО надо?? (или чего-то посложнее?? Тогда выброси...)
Миниатюры
чекбоксы в ListView  
0
 Аватар для morgann55
1365 / 207 / 37
Регистрация: 09.02.2012
Сообщений: 745
11.09.2013, 04:38
Это из Букваря... Там ещё есть ListComboBox...
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
11.09.2013, 04:48  [ТС]
Название: Снимок.GIF
Просмотров: 126

Размер: 4.3 Кб
Есть такой же вариант ток с чекбоксами, причём если чекбокс гдето внутри дерева выделен то начало основной ветви подсвечивается квадратиком в чекбоксе.
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
11.09.2013, 05:54  [ТС]
а народ сорь ошибся)
компонент называется TreeView
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
11.09.2013, 10:05
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Делал что-то подобное...
Миниатюры
чекбоксы в ListView  
Вложения
Тип файла: rar Tree.rar (1.9 Кб, 13 просмотров)
2
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
11.09.2013, 11:57
Лучший ответ Сообщение было отмечено The trick как решение

Решение

Цитата Сообщение от radlif Посмотреть сообщение
Есть такой же вариант ток с чекбоксами, причём если чекбокс гдето внутри дерева выделен то начало основной ветви подсвечивается квадратиком в чекбоксе.
Такое можно эмулировать иконками.
Кликните здесь для просмотра всего текста
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
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
Option Explicit
 
Private Enum ChkState
    CS_UNCHECKED = 1
    CS_CHECKED = 2
    CS_GRAYED = 3
End Enum
Private Sub Form_Load()
    tvwTree.Nodes.Add , , "main1", "Main 1", CS_UNCHECKED
    tvwTree.Nodes.Add , , "main2", "Main 2", CS_UNCHECKED
    tvwTree.Nodes.Add , , "main3", "Main 3", CS_UNCHECKED
    tvwTree.Nodes.Add "main1", tvwChild, "main1ch1", "Child1", CS_UNCHECKED
    tvwTree.Nodes.Add "main1", tvwChild, "main1ch2", "Child2", CS_UNCHECKED
    tvwTree.Nodes.Add "main1", tvwChild, "main1ch3", "Child3", CS_UNCHECKED
    tvwTree.Nodes.Add "main1ch1", tvwChild, "main1ch1ch1", "Child1", CS_UNCHECKED
    tvwTree.Nodes.Add "main1ch1", tvwChild, "main1ch2ch1", "Child2", CS_UNCHECKED
    tvwTree.Nodes.Add "main1ch1ch1", tvwChild, "main1ch1ch1ch1", "Child1", CS_UNCHECKED
    tvwTree.Nodes.Add "main1ch1ch1", tvwChild, "main1ch2ch1ch1", "Child2", CS_UNCHECKED
    tvwTree.Nodes.Add "main1ch2ch1ch1", tvwChild, "main1ch1ch1ch1ch1", "Child1", CS_UNCHECKED
    tvwTree.Nodes.Add "main1ch2ch1ch1", tvwChild, "main1ch2ch1ch1ch1", "Child2", CS_UNCHECKED
    tvwTree.Nodes.Add "main2", tvwChild, "main2ch2", "Child2", CS_UNCHECKED
    tvwTree.Nodes.Add "main2", tvwChild, "main2ch3", "Child3", CS_UNCHECKED
End Sub
 
Private Sub tvwTree_MouseDown(Button As Integer, Shift As Integer, X As Single, y As Single)
    Dim Sel As Node, Pt As Node
    Dim Lvl As Long
    Dim nX As Long, dx As Long
    
    Set Sel = tvwTree.HitTest(X, y)
    
    If Sel Is Nothing Then Exit Sub
    
    Set Pt = Sel
    
    X = ScaleX(X, vbTwips, vbPixels) - 3
    
    Do Until Pt.Parent Is Nothing
        Set Pt = Pt.Parent
        Lvl = Lvl + 1
    Loop
    
    nX = Lvl * tvwTree.Indentation
    dx = X - nX
    
    If dx <= iglIcon.ImageWidth Then
        If Sel.Image = CS_UNCHECKED Or Sel.Image = CS_GRAYED Then
            Sel.Image = CS_CHECKED
            MarkAllChild Sel, CS_CHECKED
        Else
            Sel.Image = CS_UNCHECKED
            MarkAllChild Sel, CS_UNCHECKED
        End If
        
        MarkAllParents Sel
 
    End If
End Sub
Private Sub MarkAllParents(Child As Node)
    Dim Prnt As Node
    Dim Chld As Node
    Dim Ct As Long
    Dim IsGr As Boolean
    
    Set Prnt = Child.Parent
    
    If Not Prnt Is Nothing Then
        Set Chld = Child.FirstSibling
        Do Until Chld Is Nothing
            If Chld.Image = CS_CHECKED Then
                Ct = Ct + 1
            ElseIf Chld.Image = CS_GRAYED Then
                Ct = Ct + 1
                IsGr = True
                Exit Do
            End If
            Set Chld = Chld.Next
        Loop
        If Ct = 0 Then
            Prnt.Image = CS_UNCHECKED
        ElseIf IsGr Or Ct < Prnt.Children Then
            Prnt.Image = CS_GRAYED
        ElseIf Ct = Prnt.Children Then
            Prnt.Image = CS_CHECKED
        End If
        
        MarkAllParents Prnt
    End If
End Sub
Private Sub MarkAllChild(Parent As Node, Value As ChkState)
    Dim Chld As Node
    
    Set Chld = Parent.Child
    Do Until Chld Is Nothing
        Chld.Image = Value
        If Chld.Children Then MarkAllChild Chld, Value
        Set Chld = Chld.Next
        DoEvents
    Loop
End Sub
Миниатюры
чекбоксы в ListView  
Вложения
Тип файла: rar GrayedTreeView.rar (2.4 Кб, 14 просмотров)
2
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
12.09.2013, 22:31
Хотелось бы добавить, чтобы узнать расстояние от левой границы ListView'а, до иконки главных узлов (в примере я использовал константно - 3), надо использовать сообщение TVM_SETBORDER:
Visual Basic
1
2
    BrdSize = SendMessage(tvwTree.hwnd, TVM_SETBORDER, TVSBF_XBORDER, ByVal 0)
    SendMessage tvwTree.hwnd, TVM_SETBORDER, TVSBF_XBORDER, ByVal BrdSize
В BrdSize получаем расстояние по горизонтали.
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
13.09.2013, 20:55  [ТС]
The trick, Ты иконки сам рисовал в ImageList?)
1
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.09.2013, 21:53
Нет. Это иконки извлеченные из одной тем Windows
1
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
13.09.2013, 22:03  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Нет. Это иконки извлеченные из одной тем Windows
Кст не подскажешь что нибудь насчёт того какое качество изображения, принимают компоненты в vb?
И размер, как я понял единицы исчисления совсем не пиксели и как высчитывать чтоб попасть без понятия
подбираю пока наугад
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.09.2013, 22:37
Цитата Сообщение от radlif Посмотреть сообщение
Кст не подскажешь что нибудь насчёт того какое качество изображения, принимают компоненты в vb?
Если ты имеешь ввиду глубину цвета, то ImageList понимает от 1bpp До 24bpp (1 бит прозрачности для .ico), выше уже не сохраняет, так что 32 битный bmp с альфа-каналом не получится в нем сохранить. Еще можно задать цвет прозрачности для всего рисунка. Также впринципе все стандартные контролы. Используй LoadPicture для того чтобы можно было загружать изображения с альфа каналом, для ручной отрисовки.
Цитата Сообщение от radlif Посмотреть сообщение
И размер, как я понял единицы исчисления совсем не пиксели и как высчитывать чтоб попасть без понятия
подбираю пока наугад
Опять-таки, если речь идет о ImageList, то контролы, использующие его в качестве контейнера иконок, отрисовывают все под один размер (свойства ImageWidth, ImageHeight), даже если иконка меньше она растягивается до этих размеров. Если ты используешь ImageList для собственной отрисовки, тогда размер каждой картинки можно получить из свойства ListImages(Index).Picture.Width\Height. Только эти размеры в единицах vbHimetric, для перевода можно использовать формулу:
Width / 2540 * (1440 / Screen.TwipsPerPixelX)
Height / 2540 * (1440 / Screen.TwipsPerPixelY)
либо методы форм. ScaleX(Width,vbhimetric,vbPixels) и аналогично для высоты
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
13.09.2013, 22:54  [ТС]
Тоесть как я понял из всего выше описанного если использовать ImageList в качестве
контейнера то при использование из него изображений в других контролах они будут
такие как в свойствах ImageList.
Если же мне надо другой размер то я могу его явно указать при импорте из ImageList
изменяя высоту и ширину по формуле описаной ниже.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.09.2013, 23:05
Цитата Сообщение от radlif Посмотреть сообщение
Тоесть как я понял из всего выше описанного если использовать ImageList в качестве
контейнера то при использование из него изображений в других контролах они будут
такие как в свойствах ImageList.
Для контролов той библиотеки в которой находится ImageList, а также имеющих одноименное свойство.
Цитата Сообщение от radlif Посмотреть сообщение
Если же мне надо другой размер то я могу его явно указать при импорте из ImageList
изменяя высоту и ширину по формуле описаной ниже.
Нет, ширину и высоту нельзя менять. Используются оригинальные размеры. Допустим, имея ImageList с несколькими изображениями разных размеров. При отрисовке на тулбаре,listview'e,treeview'e и т.д. они все будут отрисовываться под один размер, но если сделать например вот так
Visual Basic
1
Command1.Picture = ImageList1.ListImages(1).Picture
то в этом случае картинка будет в оригинале на кнопке. А если будешь сабклассить кнопку или еще какой-нибудь контрол, то можешь сам отрисовать в каком хочешь размере, только без альфа канала. Для альфа канал можно использовать LoadImage. Я раньше начинал делать библиотеку контролов, там был собственный ImageList, который позволял загружать картинки разных размеров и с альфа каналом PNG и еще кучу форматов.
1
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
13.09.2013, 23:32  [ТС]
А как сформировать полный путь от родителя до дочернего элемента?)
Так я получаю у какого элемента стоит галочка.
Но при этом я получаю только имя дочернего элемента + значение чекбокса.
Visual Basic
1
List1.AddItem tvwTree.Nodes.Item(i) & " " & tvwTree.Nodes.Item(i).Image
К примеру я строю путь от корня диска до элемента который нужно копировать/удалить/переместить,
мне проще всего после расстановки галочек запустить в цикле конструкцию.
Visual Basic
1
2
3
4
5
6
7
8
9
For i=1 To tvwTree.Count
 
If tvwTree.Nodes.Item(i).Image = 3 Then
 
Моя функция(tvwTree.полный путь(i)
 
End If
 
Next i

Не по теме:


Доделал библиотеку?))

0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
13.09.2013, 23:43
Цитата Сообщение от radlif Посмотреть сообщение
А как сформировать полный путь от родителя до дочернего элемента?)
Visual Basic
1
Node.FullPath
Цитата Сообщение от radlif Посмотреть сообщение
Доделал библиотеку?))
Частично, некоторые контролы доделал, некоторые нет, а может и все доделал. Я в свое время столько этих контролов понаделал, что даже и не вспомнить.
0
Эксперт по электронике
6568 / 3195 / 335
Регистрация: 28.10.2011
Сообщений: 12,474
Записей в блоге: 7
14.09.2013, 00:44
Цитата Сообщение от radlif Посмотреть сообщение
Тоесть папка рядом + и чекбокс, нажимаешь + открывается древо и у каждого элемента есть чекбокс.
Такое нужно?
Изображения
 
Вложения
Тип файла: zip Tree.zip (17.5 Кб, 16 просмотров)
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
14.09.2013, 00:46  [ТС]
Да) Но мы уже с Хитрым всё решили)
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
15.09.2013, 12:11  [ТС]
Название: Снимок.GIF
Просмотров: 70

Размер: 2.4 Кб
Как организовать чтоб при клике на + 1 или на самом узле 1а выдавало один и тот же результат
O:\\новая папка
Тож самое при клике на 2, 2а.
O:\\прив
Но клик на сам корень О:\ не обрабатывало?

Не по теме:

Уже весь мозг себе этим вынес, сами плюсы принадлежат корню и какую папку они открывают с них не выковырять :( .

0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
15.09.2013, 12:50  [ТС]
Нашёл методом тыка)
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub tvwTree_NodeClick(ByVal Node As Node)
    Debug.Print Node.FullPath
End Sub
 
Private Sub tvwTree_Collapse(ByVal Node As Node)
    Debug.Print Node.FullPath
End Sub
 
Private Sub tvwTree_Expand(ByVal Node As Node)
    Debug.Print Node.FullPath
End Sub


Вот как бы ещё всё в 1 верхнюю вместить)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.09.2013, 12:50
Помогаю со студенческими работами здесь

чекбоксы
вообщем редакритую user.js и хочю сделать что-бы настройки пользователя хранились в локале...но вот столкнулся с такой проблемой..с помощью...

Чекбоксы
доброго времени суток!! ниразу не работал с чекбоксами, и вот такой вопрос: есть список постов на странице и у каждого есть свой...

чекбоксы
вот тест с несколькими правильными ответами,допустим2 из 3, но я столкнулся с такой проблемой, что если в чекбоксе выбран хотя бы один...

Чекбоксы в гридах
Здравствуйте! Я пользуюсь VSflexGroup. Заполнен как во вложении. Такой вопрос: Вот есть fg.ColDataType(i) = flexDTBoolean и он...

Не работают чекбоксы из-за js
Не работают чекбоксы c js. В чем здесь проблема &lt;!doctype html&gt; &lt;html lang=&quot;en&quot;&gt; &lt;head&gt; &lt;!-- Required meta tags --&gt; ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
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 и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru