(изменено: Agens -, 9 октября 2013г. 16:46:42)

Тема: LIstView и TreeView

Решил перейти с ListBox на ListView и использовать TreeView. VBA. AutoCAD.
Возникло пару вопросов.
1. Почему то в ListView не создаются SubItem, может у кого есть пример (+TreeView)
2. Как в ListView настроить вертикальные и горизонтальные полоски в сетке, есть ли они?

(изменено: fixo, 10 октября 2013г. 13:30:43)

Re: LIstView и TreeView

Попробуй так

''     code borrowed from:
''    http://www.msoffice.nm.ru/faq/macros/msforms4.htm

Private Sub CommandButton1_Click()
Dim i As Integer

 With ListView1
         .View = lvwReport
         .FullRowSelect = True
         .LabelEdit = lvwManual
         .GridLines = True
         .HideColumnHeaders = False
         .MultiSelect = True
         .ColumnHeaders.Item(1).Width = 120
         .ColumnHeaders.Item(1) = "Block Name"
         .ColumnHeaders.Add.Width = 120
         .ColumnHeaders.Item(2) = "Attribute1"
         .ColumnHeaders.Add.Width = 80
         .ColumnHeaders.Item(3) = "Attribute2"
         .FlatScrollBar = True
         .BorderStyle = ccFixedSingle
         .ListItems.Clear

   '' use instead your own data list here:
    For i = 1 To 10
    
           If .FindItem("Block-" & CStr(i)) Is Nothing Then
           .ListItems.Add , "A" & CStr(i + 1), "Block-" & CStr(i)
           .ListItems(i).SubItems(1) = "Att1-" & CStr(i)
           .ListItems(i).SubItems(2) = "Att2-" & CStr(i)
                    ''        ETC...    ''
           End If
       Next
End With
    
End Sub

Для TreeView не могу найти у себя, хотя раньше делал не раз...

(изменено: Agens -, 10 октября 2013г. 14:16:27)

Re: LIstView и TreeView

ListView относится к Library ComctlLib C:\Windows\SysWOW64\comctl32.ocx Microsoft Windows Common Controls 5.0 (SP2) я добавил в проект эту библиотеку, но макрос не выполяется... Как правильно описать ListView, чтобы все работало?
         ' .FullRowSelect = True
         ' .LabelEdit = lvwManual
         ' .GridLines = True
         ' .FlatScrollBar = True
         ' .BorderStyle = ccFixedSingle
Не хотят обрабатываться... Нет в ListView таких свойств...

Re: LIstView и TreeView

Не могу проверить, у меня не установлен VBA
под 2010-й, проверял только в 2009-м

(изменено: Agens -, 31 октября 2013г. 12:53:38)

Re: LIstView и TreeView

Помогите, ибо я запутался.
У меня в Автокаде microsoft windows common controls 5.0 (SP2),
поэтому у меня не работает код?
Private Sub CommandButton5_Click()
    ufDisp.ListView1.ListItems.Add , , "1"
    ufDisp.ListView1.ListItems.Item(1).SubItems(1) = "d"
End Sub
Нужно 6.0 ставить?
---
Как заставить создать SubItem в 5.0? А?

(изменено: palych, 1 ноября 2013г. 00:10:57)

Re: LIstView и TreeView

Agens, 1) Касаемо пятой версии контролов и отсутствующих свойств, рекомендую ознакомиться с

Как добавить сетку, флажки, выделение всей строки и т.д. в Microsoft ListView Control version 5 ?

2) Что касается SubItems, то должОн работать такой вариант -

Private Sub CommandButton5_Click()
    With ufDisp.ListView1
         .View = lvwReport
         
         .ColumnHeaders.Add , , "Столбец1", 100
         .ColumnHeaders.Add , , "Столбец2", 150
         
         .ListItems.Add , , "1"
         .ListItems(1).SubItems(1) = "test"
    End With
End Sub

(изменено: Agens -, 1 ноября 2013г. 11:40:06)

Re: LIstView и TreeView

palych, оромное спасибо!!!
W7.x64.AC2012 - подскажите как 6.0(SP4) прикрутить?

Re: LIstView и TreeView

Дык, процесс создания subItem одинаков и в пятой и в шестой версии, а для добавления сетки, флажков и т.п. в Win7 64x, нужно просто изменить описание WinAPI функции SendMessage, типа

Private Declare PtrSafe Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As LongPtr, ByVal wMsg As Long, ByVal wParam As LongPtr, lParam As Any) As LongPtr

Re: LIstView и TreeView

palych пишет:

...для добавления сетки, флажков и т.п. в Win7 64x, нужно просто изменить описание WinAPI функции SendMessage...

Не путай человека. Для этого у ListView есть свойства: FullRowSelect (выделение всей строки), GridLines (добавить сетку), Checkboxes(флажки) и прочее.
Можно всё настроить в конструкторе.

Agens - пишет:

...W7.x64.AC2012 - подскажите как 6.0(SP4) прикрутить?

Прикручивается точно так же как и предыдущие версии. Добавить Activex: VBAIDE в меню "Tools->Additional Controls...". В открывшемся диалоговом окне находишь свой Microsoft ListView Control 6.0 (SP4), помечаешь его галочкой (если помечено, то он уже добавлен). Всё, он добавлен на панель контролов. Ищешь его там и кидаешь на форму. Работаешь. Если надо заменить имеющийся (другой версии) кидаешь новый, удаляешь старый (не забываешь переименовать потом новый именем старого).

ЗЫ. ИМХО. Если у тебя Microsoft ListView Control 6.0 (SP6), а ты хочешь SP4, ничего не получится. Будет подхватываться более новый. Но попробовать можно.

Re: LIstView и TreeView

Ingwar, прочитайте сначала хотя бы третье сообщение, тогда, возможно, к Вам придет понимание, что у пятой версии ListView нет свойств FullRowSelect, GridLines, Checkboxes

Re: LIstView и TreeView

palych пишет:

прочитайте сначала хотя бы третье сообщение, тогда, возможно, к Вам придет понимание

palych, может надо было весь форум прочитать? Поменьше яду.

palych пишет:

Дык, процесс создания subItem одинаков и в пятой и в шестой версии, а для добавления сетки, флажков и т.п. в Win7 64x, нужно просто изменить описание WinAPI функции SendMessage...

Тут ясно не написано в какой именно версии идёт речь. Согласен что в Microsoft ListView Control 5.0 нет этих свойств.

(изменено: palych, 5 ноября 2013г. 19:59:40)

Re: LIstView и TreeView

Уверен, что автор топика понял о какой версии идет речь, а всем остальным лучше не выдергивать клочки текста, а прочитать весь [S]форум[/S] топик  ;)

Re: LIstView и TreeView

Ай, ребята... Забил я на VBA и поставил VB.NET...