Jump to content

Welcome to MSFN Forum
Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more. This message will be removed once you have signed in.
Login to Account Create an Account


Photo

[vb] Change Treeview Bground Color

- - - - -

  • Please log in to reply
2 replies to this topic

#1
Doggie

Doggie

    I'm very inactive :(

  • Patrons
  • 2,676 posts
As programmers know, you cannot change the Treeview Background Color manually in the options but i've found a good way of doing it in Runtime
First of all create a new project and add a treeview control. To do this you need to goto the menu Project > Components and look for Microsoft Windows Common Controls, select it and adds more controls to your toolbox.

Once thats done we can add some code :)

For the general declarations, put the following
Option Explicit 'Needed to make sure declared strings etc work
Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long 'Used to set the following tweak
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long 'Get treeview handle
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 'Set handle
Private Const GWL_STYLE = -16& 'The current style of treeview
Private Const TVM_SETBKCOLOR = 4381& 'Set Bground Color
Private Const TVM_GETBKCOLOR = 4383& "Get Bground Color
Private Const TVS_HASLINES = 2& 'Misc stuff needed
Dim frmlastForm As Form 'The form using

Now the Form on Load Event
Private Sub Form_Load()
    Dim nodX As Node 'Creates nodX as the default Node
    Set nodX = TreeView1.Nodes.Add(, , "R", "Default Plugins") 'Cut all this out of a prog i doing currently :P
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "DP1", "Bios")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "DP2", "Video")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "DP3", "Sound")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "DP4", "CD/DVD")
    Set nodX = TreeView1.Nodes.Add("R", tvwChild, "DP5", "Controllers")
    nodX.EnsureVisible ' Make sure it visible
    TreeView1.Style = tvwTreelinesText ' Style 4.
    TreeView1.BorderStyle = vbFixedSingle
    ChangeTreeviewColor 'This will be eventually the event to change the color :)
End Sub
Now we have to make a lil event called ChangeTreeViewColor
Private Sub ChangeTreeviewColor()
    Dim lngStyle As Long 'Explained further on
    Call SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, ByVal RGB(216, 228, 248)) 'Sends a message setting the color defined in the RGB(x,x,x) color value
    lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE) 'lngStyle will have the init handle of treeview control
    Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle - TVS_HASLINES) 'Sets handle
    Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle) 'Sets handle
End Sub
To make sure it works, call the ChangeTreeviewColor event during the FormLoad event which has already been done :rolleyes:

Questions, Abuse etc welcome :D


How to remove advertisement from MSFN

#2
daniel

daniel
  • Member
  • 3 posts
I came across this a while ago too, I didnt know you couldnt change the bg color from the control itself untill i saw it, soo.. any idea on why you cant do it from the control?

(its me btw, yeah, me)

#3
Doggie

Doggie

    I'm very inactive :(

  • Patrons
  • 2,676 posts
yep.. gz from msnfanatics .. welcome dude :)




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users



How to remove advertisement from MSFN