Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 15.06.06 14:07
LBS_OWNERDRAWVARIABLE
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-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 15.06.06 20:54
Если я Вас (или не Вас) правильно понял, то мою задачу простым изменением св-в ListBox-а не решишь....

Да, нужно создать окно типа листбокс с указанным стилем, а потом реагировать на поступающие оконные сообщения, отрисовывая вручную контрол и возвращая ширины столбцов.
Возможно существуют другие Control-ы, позволяющие осуществлять изменение цвета одной строки отдельно или ширину одного столбца делать отличной от ширны другого?

Попробуй ListView

Ответить

Номер ответа: 4
Автор ответа:
 Vilor



Вопросов: 5
Ответов: 28
 Профиль | | #4 Добавлено: 15.06.06 21:04
А примерчик нельзя привести хоть небольшой? Или на мыло скинуть? Мне и нужно-то отдельную форму с таким Control-ом и одной кнопкой. И задача - не усложнять дизайн увеличивая количество объектов, а использовать ругие методы предоставления пользователю информации не содержащейся в списке явно.

Ответить

Номер ответа: 5
Автор ответа:
 Vilor



Вопросов: 5
Ответов: 28
 Профиль | | #5 Добавлено: 15.06.06 21:12

окно типа листбокс с указанным стилем
- это как??? Можно подробнее и с примером?
Попробуй ListView

В списке доступных Control-ов ListView не обнаружил. Как его подключить?

Ответить

Номер ответа: 6
Автор ответа:
 Vilor



Вопросов: 5
Ответов: 28
 Профиль | | #6 Добавлено: 15.06.06 23:15
ListView конечно штука хорошая, но никак не пойму чем определяется расположение записей и как указать цвет шрифта для отдельной записи? Почему в приведенном коде запонение идет справо налево? Как включеть ScrollBar?
Private Sub Test()
'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 - выход есть:
LW=""
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

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам