Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vb6 - Вопрос на тему ListView Item BackColor / 6 сообщений из 6, страница 1 из 1
15.07.2010, 10:21
    #36742431
h7h2vC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 - Вопрос на тему ListView Item BackColor
День добрый, товарищи.

Применяется закраска фона строк ListView методом, использующим PictureBox и взятым отсюда (пример присутствует): http://www.vbforums.com/showthread.php?t=510389

Либо по случаю дикой жары, либо еще по каким причинам (варианты не предлагать) не могу сообразить как переделать этот пример, чтобы строка закрашивалась не целиком, а допустим только по третьей колонке. Т.е. фон каждой строки должен начинаться с ListView.ColumnHeaders(3).Left и до ListView.ColumnHeaders(3).Left + ListView.ColumnHeaders(3).Width

Заранее спасибо.
...
Рейтинг: 0 / 0
15.07.2010, 10:38
    #36742496
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 - Вопрос на тему ListView Item BackColor
ListView.ColumnHeaders(x).Left, ListView.ColumnHeaders(x).Width
...
Рейтинг: 0 / 0
15.07.2010, 10:40
    #36742499
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 - Вопрос на тему ListView Item BackColor
Тфу блин, насчет этих свойств ты уже в курсе. В чем проблема тогда?
...
Рейтинг: 0 / 0
15.07.2010, 10:44
    #36742510
h7h2vC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 - Вопрос на тему ListView Item BackColor
Вот непосредственно функция:
Код: plaintext
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.
Sub lvwClients_StatusBkgColor(LVW As LISTVIEW, picBG As PictureBox)

Dim i                    As Long
Dim Item                 As ListItem
Dim sITEM                As ListSubItem
Dim cWidth               As Long: cWidth = picBG.Width

On Error Resume Next
picBG.Cls

   If LVW.ListItems.Count >  0  Then
   
       picBG.Width = Screen.Width
       picBG.height = LVW.ListItems( 1 ).height * (LVW.ListItems.Count)
       picBG.ScaleHeight = LVW.ListItems.Count
       picBG.ScaleWidth =  1 
       picBG.DrawWidth =  1 
       picBG.Cls
   
       For Each Item In LVW.ListItems
          picBG.Line ( 0 , Item.Index -  1 )-( 1 , Item.Index), GP(Item.TAG, "Status_Color"), BF
          Item.ForeColor = GP(Item.TAG, "Status_Color")
       Next
   
       LVW.Picture = picBG.Image
   Else
      picBG.Cls
      picBG.Line ( 0 ,  0 )-( 1 ,  100 ), vbWindowBackground, BF                                          'ÎÁÛ×ÍÛÉ
      LVW.Picture = picBG.Image
   End If
   LVW.Refresh
End Sub
Здесь x1, x2 равны 0 и 1 соответственно. Я никак не могу взять в толк, как координаты колонок перевести в координаты x1, x2 для метода .Line
...
Рейтинг: 0 / 0
15.07.2010, 11:02
    #36742560
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 - Вопрос на тему ListView Item BackColor
h7h2vCЯ никак не могу взять в толк, как координаты колонок перевести в координаты x1, x2 для метода .Line
Код: plaintext
1.
picBG.ScaleHeight = LVW.ListItems.Count
picBG.ScaleWidth =  1 
Это означает, что один "пиксель", например, Line'а по высоте равен высоте картинки делёной на количество строк, а ширина 100% от ширины картинки. Кстати тут засада — чем больше строк, тем больше отклонение строк фона от ячеек.

picBG.ScaleWidth нужно убрать, а в Line поставить соответственно Left и Left + Width.
...
Рейтинг: 0 / 0
15.07.2010, 11:12
    #36742583
h7h2vC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
vb6 - Вопрос на тему ListView Item BackColor
Antonariy, спасибо!
Все работает как хотелось
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / vb6 - Вопрос на тему ListView Item BackColor / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]