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

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,649
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
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
 
Web KT
Back
Top Bottom