Страница: 1 |
Страница: 1 |
Вопрос: Как изменить цвет выделенной строки в ListView ?
Добавлено: 30.09.04 11:13
Автор вопроса: avkiev | ICQ: 226072
Как изменить цвет выделенной строки в ListView ?
Поясню: цвет невыделенного элемента можно менять с помощью .ForeColor
Но когда строка становится выделенной, то ее цвет берется из настроек винды (имхо). Можно ли все же им как то управлять ?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #1
Добавлено: 30.09.04 11:19
скачай лучше с этого сайта API варианты...
Номер ответа: 2
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #2
Добавлено: 30.09.04 11:21
Что то в этом роде…
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function SetSysColors Lib "user32" (ByVal nChanges As Long, lpSysColor As Long, lpColorValues As Long) As Long
Private Const COLOR_ACTIVEBORDER = 10
Private Const COLOR_ACTIVECAPTION = 2
Private Const COLOR_ADJ_MAX = 100
Private Const COLOR_ADJ_MIN = -100 'shorts
Private Const COLOR_APPWORKSPACE = 12
Private Const COLOR_BACKGROUND = 1
Private Const COLOR_BTNFACE = 15
Private Const COLOR_BTNHIGHLIGHT = 20
Private Const COLOR_BTNSHADOW = 16
Private Const COLOR_BTNTEXT = 18
Private Const COLOR_CAPTIONTEXT = 9
Private Const COLOR_GRAYTEXT = 17
Private Const COLOR_HIGHLIGHT = 13
Private Const COLOR_HIGHLIGHTTEXT = 14
Private Const COLOR_INACTIVEBORDER = 11
Private Const COLOR_INACTIVECAPTION = 3
Private Const COLOR_INACTIVECAPTIONTEXT = 19
Private Const COLOR_INFOBK = 24
Private Const COLOR_MENU = 4
Private Const COLOR_MENUTEXT = 7
Private Const COLOR_SCROLLBAR = 0
Private Const COLOR_WINDOW = 5
Private Const COLOR_WINDOWFRAME = 6
Private Const COLOR_WINDOWTEXT = 8
Private Sub Command1_Click()
n& = GetSysColor(24)
n& = SetSysColors(1, 24, RGB(xxx, xxx, xxx))
End Sub
'COLOR_HIGHLIGHT = 13(Выделеный пункт меню)
'COLOR_INFOBK = 24 (Цвет всплывающей подсказки)
Номер ответа: 3
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #3
Добавлено: 30.09.04 11:30
То есть вообще отказаться от ListView ? И все делать средствами API ?
Таким образом я перенастрою таблицу цветов во всей системе, верно ? Нехорошо это...
Номер ответа: 4
Автор ответа:
User Unknown
Вечный Юзер!
ICQ: uu@jabber.cz
Вопросов: 120
Ответов: 3302
Профиль | | #4
Добавлено: 30.09.04 11:32
То есть вообще отказаться от ListView ? И все делать средствами API ?
А чем это плохо?
Номер ответа: 5
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #5
Добавлено: 30.09.04 11:40
Для меня это плохо тем, что усложнится программа.
Можно ли это сделать не отказываясь от ЛистВью и не переопределяя виндовую таблицу цветов ?
Спасибо, кстати, за оба предложенных варианта
Номер ответа: 6
Автор ответа:
Mihalыch
ICQ: 373-509-101
Вопросов: 56
Ответов: 330
Профиль | | #6
Добавлено: 30.09.04 11:42
А в чем проблема то, поюзал и взад вернул видовую таблицу цветов…
Номер ответа: 7
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #7
Добавлено: 30.09.04 11:44
Да, пожалуй так и сделаю, пасиб
Номер ответа: 8
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #8
Добавлено: 30.09.04 13:30
Чем это уможет усложнить твою прогу, если все уже написано ???
Номер ответа: 9
Автор ответа:
avkiev
ICQ: 226072
Вопросов: 48
Ответов: 107
Профиль | | #9
Добавлено: 12.10.04 14:05
Да, я неправильно выразился.
Неохота использовать стороннюю компоненту из-за одной этой досадной мелочи.
Вариант с переопределением виндовой таблицы цветов - работает, но на практике это выглядит очень некрасиво: при переопределении цвета экран моргает.
Иначе - никак ?
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 12.10.04 19:19
Компоненты в дельфи, в VB контролы
А сделать цветные строчки можно с пом. сабклассинга и пр. ерунды, возьми MSDN там написано как это сделать, правдо только теоретически, примеров там тебе никто не даст... самому приходится писать...