Всем Доброго времени суток! Мне для работы приходится как-то упорядочивать и выводить массу данных. Использую многостолбцовый ListBox. Данные выводятся по различным условиям (месяц, год и .....). Но в ListBox есть несколько недостатков, которые несколько ухудшают восприятие. 1. Нет возможности увидеть всю строчку в столбце (можно, конечно использовать доп. элементы, но это не вариант) 2. Нет возможности задать разный цвет отдельным строкам (это большой плюс, визуально сразу видно, что, например какие-то данные не в порядке). Знаю, что в ListBox реализовать это не представляется возможным, в отличие от ListView. Вот и хотелось бы спросить, у знающих людей, кто использовал этот элемент. Как заполнить ListView с несколькими столбцами, установить начальный их размер. Например, сейчас я заполняю ListBox так:[vba]
Код
ListBox1.Clear lr = Cells(Rows.Count, 1).End(xlUp).Row j = 0 For i = 1 To lr Step 1 If Cells(i, 2) Like "*" & TextBox1 & "*" Then ListBox1.AddItem Cells(i, 1) ListBox1.List(j, 1) = Cells(i, 2) j = j + 1 End If Next i
[/vba] Искал какую-нибудь литературу - ничего дельного. Может кто-нибудь что-нибудь подскажет и посоветует Образно набросал небольшой файлик с ListBox
Всем Доброго времени суток! Мне для работы приходится как-то упорядочивать и выводить массу данных. Использую многостолбцовый ListBox. Данные выводятся по различным условиям (месяц, год и .....). Но в ListBox есть несколько недостатков, которые несколько ухудшают восприятие. 1. Нет возможности увидеть всю строчку в столбце (можно, конечно использовать доп. элементы, но это не вариант) 2. Нет возможности задать разный цвет отдельным строкам (это большой плюс, визуально сразу видно, что, например какие-то данные не в порядке). Знаю, что в ListBox реализовать это не представляется возможным, в отличие от ListView. Вот и хотелось бы спросить, у знающих людей, кто использовал этот элемент. Как заполнить ListView с несколькими столбцами, установить начальный их размер. Например, сейчас я заполняю ListBox так:[vba]
Код
ListBox1.Clear lr = Cells(Rows.Count, 1).End(xlUp).Row j = 0 For i = 1 To lr Step 1 If Cells(i, 2) Like "*" & TextBox1 & "*" Then ListBox1.AddItem Cells(i, 1) ListBox1.List(j, 1) = Cells(i, 2) j = j + 1 End If Next i
[/vba] Искал какую-нибудь литературу - ничего дельного. Может кто-нибудь что-нибудь подскажет и посоветует Образно набросал небольшой файлик с ListBoxDмитрий
Private Sub CommandButton1_Click() Dim i& With Me.ListView1 For i = 10 To 1 Step -1 With .ListItems.Add .Text = Cells(i, 1) .ListSubItems.Add , , Cells(i, 2) .ListSubItems.Add , , Cells(i, 3) End With Next i End With End Sub
[/vba]
наверное, как-то так: [vba]
Код
Private Sub CommandButton1_Click() Dim i& With Me.ListView1 For i = 10 To 1 Step -1 With .ListItems.Add .Text = Cells(i, 1) .ListSubItems.Add , , Cells(i, 2) .ListSubItems.Add , , Cells(i, 3) End With Next i End With End Sub
Я в 2012 году (сейчас уже ничего почти не помню ) разбирался с ListView. Думал применить его на работе, но что-то отвлекло, а потом и надобность отпала... Помню только, что на старой Планете тему курили и, кажется, была проблема с неуверенной работой на разных машинах из-за разницы версий в библиотеках. (Хотошо, что попробовал перейти по ссылке. Не знаю, почему, но ссылка на Планету получилась битая попробую напрямую адрес дать: http://www.planetaexcel.ru/forum....D=39876 ) Однако то, что нарыл/наплодил у себя в копилке сохранил. Сейчас выложил на Гугл.Диск и расшарил. Поройтесь. Там много всего. Но только я через недельку-другую удалю - у меня на Диске место заканчивается и придётся его скоро чистить.
Я в 2012 году (сейчас уже ничего почти не помню ) разбирался с ListView. Думал применить его на работе, но что-то отвлекло, а потом и надобность отпала... Помню только, что на старой Планете тему курили и, кажется, была проблема с неуверенной работой на разных машинах из-за разницы версий в библиотеках. (Хотошо, что попробовал перейти по ссылке. Не знаю, почему, но ссылка на Планету получилась битая попробую напрямую адрес дать: http://www.planetaexcel.ru/forum....D=39876 ) Однако то, что нарыл/наплодил у себя в копилке сохранил. Сейчас выложил на Гугл.Диск и расшарил. Поройтесь. Там много всего. Но только я через недельку-другую удалю - у меня на Диске место заканчивается и придётся его скоро чистить.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Понедельник, 26.05.2014, 08:57
Всем спасибо, за помощь! nilem, и Alex_ST, отдельно ОГРОМНОЕ. Вчера до утра мучался, но все-таки добил ListView, внедрил вместо Listbox. Все классно работает. Сегодня утром пришел на работу, запустил и ..... а все так хорошо начиналось. Дома Win7.32, на работе Win7.64 - беда. Перешел по ссылке Alex_ST, My WebPage, скачал MSCOMCTL.OCX, вставил в папку C:\Windows\SysWOW64, зарегистрировал, вроде успешно. Перезагрузил, после этого, я так понимаю ListView должен был появиться в Additional Controls - пусто. Я понимаю, что тема, может не супер, но так жалко, Control ведь классный и так все хорошо работало на Win7.32, а я уже таких планов настроил..... [p.s.]Попробую еще зарегистрировать в system32 Возможно библиотека Microsoft Windows Common Controls 6.0 как-то отдельно подключается.
Всем спасибо, за помощь! nilem, и Alex_ST, отдельно ОГРОМНОЕ. Вчера до утра мучался, но все-таки добил ListView, внедрил вместо Listbox. Все классно работает. Сегодня утром пришел на работу, запустил и ..... а все так хорошо начиналось. Дома Win7.32, на работе Win7.64 - беда. Перешел по ссылке Alex_ST, My WebPage, скачал MSCOMCTL.OCX, вставил в папку C:\Windows\SysWOW64, зарегистрировал, вроде успешно. Перезагрузил, после этого, я так понимаю ListView должен был появиться в Additional Controls - пусто. Я понимаю, что тема, может не супер, но так жалко, Control ведь классный и так все хорошо работало на Win7.32, а я уже таких планов настроил..... [p.s.]Попробую еще зарегистрировать в system32 Возможно библиотека Microsoft Windows Common Controls 6.0 как-то отдельно подключается.Dмитрий
Да потому от его использования и пришлось в конце-концов отказаться, что это кОнтрол с непредсказуемым на разных машинах поведением. У меня на всех компах Win-32 и ListView нормально работает на MSCOMCTL.OCX с версиями: Версия файла : 6.1.98.39 Версия продукта : 6.01.9839 Я его тоже выложил на Гугл.Диск в ту же расшаренную папку.
Проверьте версию MSCOMCTL.OCX на своих компах этой процедурой: [vba]
Код
Sub FileVersion() Dim sPath$: sPath = "C:\Windows\System32\" Dim sFileName$: sFileName = "MSCOMCTL.OCX" Dim iNum%, oFolder As Object, oFile As Object 'Set oFolder = CreateObject("Shell.Application").Namespace(CVar(sPath)) Set oFolder = CreateObject("Shell.Application").Namespace((sPath)) Set oFile = oFolder.ParseName(sFileName) iNum = 156 Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum) iNum = 271 Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum) End Sub
[/vba]
Да потому от его использования и пришлось в конце-концов отказаться, что это кОнтрол с непредсказуемым на разных машинах поведением. У меня на всех компах Win-32 и ListView нормально работает на MSCOMCTL.OCX с версиями: Версия файла : 6.1.98.39 Версия продукта : 6.01.9839 Я его тоже выложил на Гугл.Диск в ту же расшаренную папку.
Проверьте версию MSCOMCTL.OCX на своих компах этой процедурой: [vba]
Код
Sub FileVersion() Dim sPath$: sPath = "C:\Windows\System32\" Dim sFileName$: sFileName = "MSCOMCTL.OCX" Dim iNum%, oFolder As Object, oFile As Object 'Set oFolder = CreateObject("Shell.Application").Namespace(CVar(sPath)) Set oFolder = CreateObject("Shell.Application").Namespace((sPath)) Set oFile = oFolder.ParseName(sFileName) iNum = 156 Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum) iNum = 271 Debug.Print oFolder.GetDetailsOf(oFolder.Items, iNum) & " : " & oFolder.GetDetailsOf(oFile, iNum) End Sub
Ну вроде домучал, даже дышать легче стало. Перепробовал массу вариантов, даже сейчас сложно сказать, в чем была причина. Буду дальше разрабатывать, не пришлось бы в итоге после стольких мучений вообще отказаться от данного контролла
Ну вроде домучал, даже дышать легче стало. Перепробовал массу вариантов, даже сейчас сложно сказать, в чем была причина. Буду дальше разрабатывать, не пришлось бы в итоге после стольких мучений вообще отказаться от данного контролла Dмитрий