Цветные строки в combobox - VB
Формулировка задачи:
Возможно ли сделать в combobox строки цветными ? Мне нужно выделить те, элементы которые недоступны для выбора. Как в менюхе, серым цветом. Может есть какой то другой способ ?
Решение задачи: «Цветные строки в combobox»
textual
Листинг программы
Private Function DrawItem(drw As DRAWITEMSTRUCT) As Boolean Dim obr As Long, opn As Long, l As Long, s As String obr = SelectObject(drw.hdc, GetStockObject(DC_BRUSH)) opn = SelectObject(drw.hdc, GetStockObject(DC_PEN)) If (drw.itemState And ODS_SELECTED) Then SetDCBrushColor drw.hdc, GetSysColor(COLOR_HIGHLIGHT) SetDCPenColor drw.hdc, GetSysColor(COLOR_HIGHLIGHT) Rectangle drw.hdc, drw.rcItem.Left, drw.rcItem.Top, drw.rcItem.Right, drw.rcItem.Bottom SetDCPenColor drw.hdc, GetSysColor(COLOR_HIGHLIGHTTEXT) SetTextColor drw.hdc, GetSysColor(COLOR_HIGHLIGHTTEXT) Else SetDCBrushColor drw.hdc, GetSysColor(COLOR_WINDOW) SetDCPenColor drw.hdc, GetSysColor(COLOR_WINDOW) Rectangle drw.hdc, drw.rcItem.Left, drw.rcItem.Top, drw.rcItem.Right, drw.rcItem.Bottom SetDCPenColor drw.hdc, GetSysColor(COLOR_WINDOWTEXT) SetTextColor drw.hdc, drw.itemData ' GetSysColor(COLOR_WINDOWTEXT) End If SetBkMode drw.hdc, TRANSPARENT If drw.itemID >= 0 Then 'SetDCBrushColor drw.hdc, drw.itemData 'Rectangle drw.hdc, drw.rcItem.Left + 3, drw.rcItem.Top + 3, drw.rcItem.Left + 70, drw.rcItem.Bottom - 3 l = SendMessage(drw.hwndItem, CB_GETLBTEXTLEN, drw.itemID, ByVal 0) If l Then s = Space(l + 1) l = SendMessage(drw.hwndItem, CB_GETLBTEXT, drw.itemID, ByVal s) s = Left(s, l) drw.rcItem.Left = drw.rcItem.Left + 2 ' 78 End If Else drw.rcItem.Left = drw.rcItem.Left + 2 s = "None" End If DrawText drw.hdc, ByVal s, Len(s), drw.rcItem, DT_VCENTER Or DT_SINGLELINE SelectObject drw.hdc, obr SelectObject drw.hdc, opn End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д