Tùy biến hiển thị Treeview, đổi màu chữ và nền các node - BSAC

Quảng cáo

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia ngày
13 Tháng sáu 2006
Bài viết
4,402
Được thích
9,917
Điểm
2,868
Nơi ở
Hà Nội
Tùy biến hiển thị Treeview với màu nền và màu chữ của node được chọn. Sử dụng #BSTreeView trong BSAC.
BSTreeView là control cao cấp trong VBA cho phép hiển thị unicode, chạy với Office 32 và 64 bit, tùy biến hiển thị dễ dàng với màu sắc, font, hình ảnh,....
Mã nguồn ví dụ này:


Mã:
Option Explicit
'http://atoolspro.com
'BSTreeView with AdvancedCustomDrawItem
Private Sub UserForm_Initialize()
    Dim n As BSTreeNode
    Set n = BSTreeview1.Items.Add(, , "Tuan 1")
    BSTreeview1.Items.Add n, , "Tuan 1.1"
    BSTreeview1.Items.Add n, , "Tuan 1.2"
    Set n = BSTreeview1.Items.Add(n, , "Tuan 1.3")
    BSTreeview1.Items.Add n, , "Tuan 1.3.1"
    BSTreeview1.Items.Add n, , "Tuan 1.3.2"
    BSTreeview1.Items.Add n, , "Tuan 1.3.3"
    
    BSTreeview1.Items.Add , , "Tuan 2"
    BSTreeview1.Items.Add , , "Tuan 3"
    
    BSTreeview1.FullExpand 'Show all nodes
End Sub

'Now I will change backcolor of selected node
Private Sub BSTreeview1_OnAdvancedCustomDrawItem(ByVal Node As BSAC.BSTreeNode, _
                        ByVal State As BSAC.TBSCustomDrawState, _
                        ByVal Stage As BSAC.TBSCustomDrawStage, _
                        PaintImages As Long, DefaultDraw As Boolean)
    If State And cdsSelected = cdsSelected Then 'Format on selected node
        Dim rc As TBSRect
        'Get rectangle of node
        Node.DisplayRect rc.Left, rc.Top, rc.Right, rc.Bottom, True
        'Set color
        BSTreeview1.Canvas.Brush.Color = vbRed
        'Fill rectangle
        BSTreeview1.Canvas.FillRect rc.Left, rc.Top, rc.Right, rc.Bottom
        'Draw text
        BSTreeview1.Canvas.ForeColor = vbYellow
        BSTreeview1.Canvas.Font.Bold = True
        BSTreeview1.Canvas.TextOut rc.Left, rc.Top, Node.Text
    Else
    End If
End Sub
 
Quảng cáo
Top Bottom