Цвет фона в TreeView

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Цвет фона в TreeView

Сообщение SBJocker » 16.08.2004 (Пн) 19:10

Как поменять САБЖ?
Белый достал уже :D

Мож сообщение какое отправить или стили присвоить :?:

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.08.2004 (Пн) 19:36

А як же - TVM_SETBKCOLOR :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2004 (Пн) 19:51

Вот, на всякий случай, рабочий пример:
Код: Выделить всё
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Const TVM_SETBKCOLOR As Long = &H1100 + 29

Private Sub Form_DblClick()
SendMessage TreeView1.hwnd, TVM_SETBKCOLOR, 0, vbRed
End Sub

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.08.2004 (Пн) 19:53

Убил накорню исследовательский момент :(
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Сообщение SBJocker » 16.08.2004 (Пн) 21:47

Спасибо всем :-)

Встречный вопрос, а откуда вы всё это берёте? Есть какой-нить справочник по сообщениям?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2004 (Пн) 22:18

msdn.microsoft.com/library

SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Сообщение SBJocker » 16.08.2004 (Пн) 22:28

Кстати, этот пример неизменяет цвет фона под итемами, вот...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.08.2004 (Вт) 8:42

Ещё есть TVM_SETTEXTCOLOR и TVM_SETLINECOLOR.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Сообщение SBJocker » 17.08.2004 (Вт) 9:18

Всё это круто, а их значения?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.08.2004 (Вт) 9:51

А значения в файле COMMCTRL.H
TV_FIRST = 0x1100
TVM_SETTEXTCOLOR = (TV_FIRST + 30)
а TVM_SETLINECOLOR чегой-то нет у меня, хотя вроде бы SP6 ставил
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.08.2004 (Вт) 9:59

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.08.2004 (Вт) 11:22

GSerg писал(а):Ещё есть TVM_SETTEXTCOLOR и TVM_SETLINECOLOR.

Но цвет фона под итемами они тоже не меняют :-)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.08.2004 (Вт) 11:57

Хм, что там у нас ещё... TVM_SETINSERTMARKCOLOR? Больше ничего нет :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Сообщение SBJocker » 17.08.2004 (Вт) 14:08

Да, проблем блин...
Попробуем последнее сообщение..

er_admin
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 04.06.2004 (Пт) 21:25

Сообщение er_admin » 17.08.2004 (Вт) 15:03

Код: Выделить всё
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal Msg As Long, wParam As Any, lParam As Any) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_STYLE = -16&
Private Const TVM_SETBKCOLOR = 4381&
Private Const TVM_GETBKCOLOR = 4383&
Private Const TVS_HASLINES = 2&


v form_load
Код: Выделить всё
SendMessage tree_view.hwnd, 4381&, 0, ByVal vbBlack
lngStyle = GetWindowLong(tree_view.hwnd, GWL_STYLE)
Call SetWindowLong(tree_view.hwnd, GWL_STYLE, lngStyle - TVS_HASLINES)

SBJocker
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 124
Зарегистрирован: 19.01.2004 (Пн) 16:57

Сообщение SBJocker » 17.08.2004 (Вт) 20:46

Попробывал код приведённый выше, результат тот же, но теперь вклбчено свойство TV - FullRowSelect...
А фон под итемами прежний..

Тут мысль есть, мож нужно получать инфу о каждом итеме и для него выставлять цвет бэкргаунда :?:

er_admin
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 04.06.2004 (Пт) 21:25

Сообщение er_admin » 18.08.2004 (Ср) 6:05

Код: Выделить всё
For i = 1 To TreeView1.Nodes.Count
    TreeView1.Nodes.Item(i).BackColor = vbYellow 'RGB(50, 50, 100) 'цвет фона итема
    TreeView1.Nodes.Item(i).ForeColor = vbBlack 'цвет фона шрифта
Next i


но я не знаю как красить линии и плюсики-минусики. может кто знает?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 18.08.2004 (Ср) 11:02

Линии и плюсики-минусики - TVM_SETLINECOLOR


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Majestic-12 [Bot], SemrushBot и гости: 5

    TopList  
cron