Цветные строки в combobox - VB

Узнай цену своей работы

Формулировка задачи:

Возможно ли сделать в combobox строки цветными ? Мне нужно выделить те, элементы которые недоступны для выбора. Как в менюхе, серым цветом. Может есть какой то другой способ ?

Решение задачи: «Цветные строки в combobox»

textual
Листинг программы
  1. Private Function DrawItem(drw As DRAWITEMSTRUCT) As Boolean
  2.     Dim obr As Long, opn As Long, l As Long, s As String
  3.     obr = SelectObject(drw.hdc, GetStockObject(DC_BRUSH))
  4.     opn = SelectObject(drw.hdc, GetStockObject(DC_PEN))
  5.     If (drw.itemState And ODS_SELECTED) Then
  6.         SetDCBrushColor drw.hdc, GetSysColor(COLOR_HIGHLIGHT)
  7.         SetDCPenColor drw.hdc, GetSysColor(COLOR_HIGHLIGHT)
  8.         Rectangle drw.hdc, drw.rcItem.Left, drw.rcItem.Top, drw.rcItem.Right, drw.rcItem.Bottom
  9.         SetDCPenColor drw.hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)
  10.         SetTextColor drw.hdc, GetSysColor(COLOR_HIGHLIGHTTEXT)
  11.     Else
  12.         SetDCBrushColor drw.hdc, GetSysColor(COLOR_WINDOW)
  13.         SetDCPenColor drw.hdc, GetSysColor(COLOR_WINDOW)
  14.         Rectangle drw.hdc, drw.rcItem.Left, drw.rcItem.Top, drw.rcItem.Right, drw.rcItem.Bottom
  15.         SetDCPenColor drw.hdc, GetSysColor(COLOR_WINDOWTEXT)
  16.         SetTextColor drw.hdc, drw.itemData ' GetSysColor(COLOR_WINDOWTEXT)
  17.    End If
  18.     SetBkMode drw.hdc, TRANSPARENT
  19.     If drw.itemID >= 0 Then
  20.         'SetDCBrushColor drw.hdc, drw.itemData
  21.        'Rectangle drw.hdc, drw.rcItem.Left + 3, drw.rcItem.Top + 3, drw.rcItem.Left + 70, drw.rcItem.Bottom - 3
  22.        l = SendMessage(drw.hwndItem, CB_GETLBTEXTLEN, drw.itemID, ByVal 0)
  23.         If l Then
  24.             s = Space(l + 1)
  25.             l = SendMessage(drw.hwndItem, CB_GETLBTEXT, drw.itemID, ByVal s)
  26.             s = Left(s, l)
  27.             drw.rcItem.Left = drw.rcItem.Left + 2 ' 78
  28.        End If
  29.     Else
  30.         drw.rcItem.Left = drw.rcItem.Left + 2
  31.         s = "None"
  32.     End If
  33.     DrawText drw.hdc, ByVal s, Len(s), drw.rcItem, DT_VCENTER Or DT_SINGLELINE
  34.     SelectObject drw.hdc, obr
  35.     SelectObject drw.hdc, opn
  36. End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут