有沒有人知道, TreeView控件的前景顏色/背景顏色如何設置,幫個忙,最好有代碼,先謝了!

hyzxp 2003-08-20 10:13:00
有沒有人知道, TreeView控件的前景顏色/背景顏色如何設置,幫個忙,最好有代碼,先謝了
...全文
53 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyzxp 2003-08-21
  • 打赏
  • 举报
回复
文字的前景顏色此終設置不了,救救我吧,神啊,
hyzxp 2003-08-21
  • 打赏
  • 举报
回复
問題已解決,謝謝各位的幫忙,分別已給分各位,謝謝,
Apple200228 2003-08-21
  • 打赏
  • 举报
回复
模块:
Public Const GWL_STYLE As Long = -16&
Public Const COLOR_WINDOW = 5
Public Const COLOR_WINDOWTEXT = 8

Public Const TVI_ROOT As Long = &HFFFF0000
Public Const TVI_FIRST As Long = &HFFFF0001
Public Const TVI_LAST As Long = &HFFFF0002
Public Const TVI_SORT As Long = &HFFFF0003

Public Const TVIF_STATE As Long = &H8

'treeview styles
Public Const TVS_HASLINES As Long = 2
Public Const TVS_FULLROWSELECT As Long = &H1000

'treeview style item states
Public Const TVIS_BOLD As Long = &H10

Public Const TV_FIRST As Long = &H1100
Public Const TVM_GETNEXTITEM As Long = (TV_FIRST + 10)
Public Const TVM_GETITEM As Long = (TV_FIRST + 12)
Public Const TVM_SETITEM As Long = (TV_FIRST + 13)
Public Const TVM_SETBKCOLOR As Long = (TV_FIRST + 29)
Public Const TVM_SETTEXTCOLOR As Long = (TV_FIRST + 30)
Public Const TVM_GETBKCOLOR As Long = (TV_FIRST + 31)
Public Const TVM_GETTEXTCOLOR As Long = (TV_FIRST + 32)

Public Const TVGN_ROOT As Long = &H0
Public Const TVGN_NEXT As Long = &H1
Public Const TVGN_PREVIOUS As Long = &H2
Public Const TVGN_PARENT As Long = &H3
Public Const TVGN_CHILD As Long = &H4
Public Const TVGN_FIRSTVISIBLE As Long = &H5
Public Const TVGN_NEXTVISIBLE As Long = &H6
Public Const TVGN_PREVIOUSVISIBLE As Long = &H7
Public Const TVGN_DROPHILITE As Long = &H8
Public Const TVGN_CARET As Long = &H9

Public Type TVITEM
mask As Long
hItem As Long
state As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
iSelectedImage As Long
cChildren As Long
lParam As Long
End Type

Public Declare Function SendMessageLong Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Declare Function SendMessageAny Lib "user32" _
Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
lParam As Any) As Long

Public Declare Function GetWindowLong Lib "user32" _
Alias "GetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long) As Long

Public Declare Function SetWindowLong Lib "user32" _
Alias "SetWindowLongA" _
(ByVal hwnd As Long, _
ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Public Declare Function GetSysColor Lib "user32" _
(ByVal nIndex As Long) As Long


Public Sub SetTVForeColour(ByVal clrref As Long, ByVal tvName As MSComctlLib.TreeView)

Dim hwndTV As Long
Dim style As Long

hwndTV = tvName.hwnd

'Change the background
Call SendMessageLong(hwndTV, TVM_SETTEXTCOLOR, 0, clrref)

'reset the treeview style so the
'tree lines appear properly
style = GetWindowLong(tvName.hwnd, GWL_STYLE)

'if the treeview has lines, temporarily
'remove them so the back repaints to the
'selected colour, then restore
If style And TVS_HASLINES Then
Call SetWindowLong(hwndTV, GWL_STYLE, style Xor TVS_HASLINES)
Call SetWindowLong(hwndTV, GWL_STYLE, style)
End If

End Sub

Public Function GetTVForeColour(ByVal tvName As MSComctlLib.TreeView) As LongDim clrref As Long
Dim hwndTV As Long

hwndTV = tvName.hwnd

'try for the treeview text colour
clrref = SendMessageLong(hwndTV, TVM_GETTEXTCOLOR, 0, 0)

'if clrref = -1, then the color is a system color.
'In theory, system colors need to be Or'd with &HFFFFFF
'to retrieve the actual RGB value, but not Or'ing
'seems to work for me. The default system colour for
'treeview text is COLOR_WINDOWTEXT.
If clrref = -1 Then
clrref = GetSysColor(COLOR_WINDOWTEXT) ' Or &HFFFFFF
End If

'one way or another, pass it back
GetTVForeColour = clrref

End Function



Public Function GetTVBackColour(ByVal tvName As MSComctlLib.TreeView) As Long

Dim clrref As Long
Dim hwndTV As Long

hwndTV = tvName.hwnd

'try for the treeview backcolor
clrref = SendMessageLong(hwndTV, TVM_GETBKCOLOR, 0, 0)

'if clrref = -1, then the color is a system color.
'In theory, system colors need to be Or'd with &HFFFFFF
'to retrieve the actual RGB value, but not Or'ing
'seems to work for me. The default system colour for
'a treeview background is COLOR_WINDOW.
If clrref = -1 Then
clrref = GetSysColor(COLOR_WINDOW) ' Or &HFFFFFF
End If

'one way or another, pass it back
GetTVBackColour = clrref
End Function

Public Sub SetTVBackColour(ByVal clrref As Long, ByVal tvName As MSComctlLib.TreeView)
Dim hwndTV As Long
Dim style As Long

hwndTV = tvName.hwnd

'Change the background
Call SendMessageLong(hwndTV, TVM_SETBKCOLOR, 0, clrref)

'reset the treeview style so the
'tree lines appear properly
style = GetWindowLong(tvName.hwnd, GWL_STYLE)

'if the treeview has lines, temporarily
'remove them so the back repaints to the
'selected colour, then restore
If style And TVS_HASLINES Then
Call SetWindowLong(hwndTV, GWL_STYLE, style Xor TVS_HASLINES)
Call SetWindowLong(hwndTV, GWL_STYLE, style)
End If

End Sub



Private Sub FromInit()
'初始化TreeView
Dim Nodx As Node
Dim lngBackColor As Long
Dim i As Long
lngBackColor =vbred
Set Nodx = tvLeft.Nodes.Add(, , "R1", "XXXXX")
Nodx.BackColor = lngBackColor '设置颜色
' tvLeft 为TreeView名称

SetTVBackColour lngBackColor, tvLeft
SetTVForeColour vbBlue, tvLeft
tvLeft.Refresh
End Sub


rainstormmaster 2003-08-21
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Dim mynode As Node
Set mynode = Me.TreeView1.Nodes.Add(, , , "test")
mynode.ForeColor = vbBlue
Dim i As Long
Dim nnode As Node
For i = 1 To 10
Set nnode = Me.TreeView1.Nodes.Add(mynode, tvwChild, , "sub" + CStr(i))
nnode.ForeColor = vbGreen
Next
End Sub
rainstormmaster 2003-08-21
  • 打赏
  • 举报
回复
TreeView背景色可以参考
http://www.mvps.org/vbnet/code/comctl/tveffects.htm
Alicky 2003-08-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2149/2149101.xml?temp=.2264673`
onlineboy 2003-08-20
  • 打赏
  • 举报
回复
up
TechnoFantasy 2003-08-20
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1928/1928826.xml
http://expert.csdn.net/Expert/topic/1500/1500899.xml
http://expert.csdn.net/Expert/topic/1636/1636574.xml

1,066

社区成员

发帖
与我相关
我的任务
社区描述
VB 资源
社区管理员
  • 资源
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧