Страница: 1 |
Страница: 1 |
Вопрос: Изменение цвета строки в ListBox
Добавлено: 14.06.06 22:18
Автор вопроса: Vilor
Подскажите, пожалуйста пример кода, позволяющего:
1. Изменять цвет шрифта одного элемента списка ListBox в зависимости от его содержимого. Например: если в списке true, то цвет шрифта этого элемента - зеленый, а если false - красный.
2. Подобрать ширину столбцов списка ListBox (например, если BoundList=2. И надо установить для 0-го поля ширирину, позволяющую отобразить все символы самой длинной строки в этом поле, для нулевого поля установить фиксированную ширину - 20, а для третьего - 40). Вообще возможно ли изменение ширины отдельных столбцов, в составе ListBox или только всего ListBox(раскрываемого списка в ComboBox)
С нетерпением жду ответов и предложений. Заранее спасибо всем ответившим.
P.S. Помогите в решении задачи, please...................
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 15.06.06 14:07
Specifies that the owner of the list box is responsible for drawing its contents and that the items in the list box are variable in height. The owner window receives a WM_MEASUREITEM message for each item in the combo box when the combo box is created and a WM_DRAWITEM message when a visual aspect of the combo box has changed.
Номер ответа: 2
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #2
Добавлено: 15.06.06 20:36
Если я Вас (или не Вас) правильно понял, то мою задачу простым изменением св-в ListBox-а не решишь....
Возможно существуют другие Control-ы, позволяющие осуществлять изменение цвета одной строки отдельно или ширину одного столбца делать отличной от ширны другого?
Где-то вычитал, что элемент MS FlexGrid имеет необходимые мне свойства, но вот незадача... В стандартных и не только библиотеках VBA (в составе Excel2003) я FlexGrid не нашел. Подскажите где его искать.
Вобще я считал, что через в VBA можно сделать практически все - наверное я ошибался .
Можеть быть можно сделать свой Control, имеющий требуемые свойства? Хотя я смутно представляю насколько это реально.
Поделитесь идеями, а если есть какие-то наработки по теме, буду просто счастлив, если поделитесь.
Номер ответа: 3
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #3
Добавлено: 15.06.06 20:54
Да, нужно создать окно типа листбокс с указанным стилем, а потом реагировать на поступающие оконные сообщения, отрисовывая вручную контрол и возвращая ширины столбцов.
Попробуй ListView
Номер ответа: 4
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #4
Добавлено: 15.06.06 21:04
А примерчик нельзя привести хоть небольшой? Или на мыло скинуть? Мне и нужно-то отдельную форму с таким Control-ом и одной кнопкой. И задача - не усложнять дизайн увеличивая количество объектов, а использовать ругие методы предоставления пользователю информации не содержащейся в списке явно.
Номер ответа: 5
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #5
Добавлено: 15.06.06 21:12
В списке доступных Control-ов ListView не обнаружил. Как его подключить?
Номер ответа: 6
Автор ответа:
Vilor
Вопросов: 5
Ответов: 28
Профиль | | #6
Добавлено: 15.06.06 23:15
ListView конечно штука хорошая, но никак не пойму чем определяется расположение записей и как указать цвет шрифта для отдельной записи? Почему в приведенном коде запонение идет справо налево? Как включеть ScrollBar?
'ListViewAction объект ListView
Set LView = ListViewAction
Dim Arr1(1 To 15)
Dim i As Long
Dim j As Byte
Dim sLV As String
With LView
.ListItems.Clear
.TextBackground = lvwOpaque
.CheckBoxes = True
.AllowColumnReorder = False
.Enabled = True
.Arrange = lvwAutoTop
.HideColumnHeaders = False
.Arrange = lvwAutoLeft
For i = 1 To 4
'.ColumnHeaders.Add i, 1, "Key" & i, Empty, Empty
For j = 1 To 20
sLV = "Элемент " & i & j
.ListItems.Add i, sLV, sLV, Empty, Empty
Next j
Select Case i
Case 1, 3, 5, 7, 9
.ForeColor = 3
Case Else
.ForeColor = 6
End Select
Next i
End With
End Sub
Вобщем вопросов больше, чем ответов. Справка VBA на ListView почему-то не работает. Подскажите, где найти инфу.
А по поводу настройки ширины полей ListBox-a - выход есть:
For i=0 to listbox1.ColumnCount
Select Case i
Case 0
LW = LW & 20 & ";"
Case 1
LW = LW & 80 & ";"
Case 2
LW = LW & 10 & ";"
next i
listbox1.=LW