Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

cambiar color de fondo de un TreeV

Estas en el tema de cambiar color de fondo de un TreeV en el foro de Visual Basic clásico en Foros del Web. Hola, alguien sabe como cambiar el background color de un TreeView ? yo tengo un ejemplo, pero el tema es que los nodos no toman ...
  #1 (permalink)  
Antiguo 21/09/2006, 19:30
 
Fecha de Ingreso: abril-2004
Mensajes: 192
Antigüedad: 21 años, 1 mes
Puntos: 0
cambiar color de fondo de un TreeV

Hola, alguien sabe como cambiar el background color de un TreeView ? yo tengo un ejemplo, pero el tema es que los nodos no toman el color, ya probe mil cosas pero nada

saludos



------------------
__________________
Recursos visual basic
  #2 (permalink)  
Antiguo 21/09/2006, 23:45
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 20 años
Puntos: 3
hola nose si sera el mismo ejemplo pero por las dudas te lo paso

Cita:
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
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&


Private Sub Form_Load()
Dim nodX As Node
Set nodX = TreeView1.Nodes.Add(, , "R", "Root")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C1", "Child 1")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C2", "Child 2")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C3", "Child 3")
Set nodX = TreeView1.Nodes.Add("R", tvwChild, "C4", "Child 4")
nodX.EnsureVisible
TreeView1.Style = tvwTreelinesText ' Style 4.
TreeView1.BorderStyle = vbFixedSingle
Dim i As Integer
For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).BackColor = vbRed
Next
Dim lngStyle As Long
Call SendMessage(TreeView1.hWnd, TVM_SETBKCOLOR, 0, ByVal RGB(255, 0, 0)) 'cambiar el fondo a rojo
'resetar el estilo para que se vean correctamente las líneas
lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle - TVS_HASLINES)
Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)
End Sub
claro que cada ves que agregas un nodo tuvieras que hacer lo siguiente

For i = 1 To TreeView1.Nodes.Count
TreeView1.Nodes(i).BackColor = vbRed
Next

o bien hacer un gancho con hook (CallWindowProc) pero me parece que es menos probleas de la primera forma

Saludos
__________________
www.leandroascierto.com
  #3 (permalink)  
Antiguo 22/09/2006, 10:21
 
Fecha de Ingreso: abril-2004
Mensajes: 192
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola Leandro gracias funciona Ok. el que estaba usando yo era de otra forma.

Ahora una duda, viste que usa SetWindowsLong para las lineas, pero yo le quite las llamadas y solo ejecute SendMEssage y funciona , y las lineas del TreeV se ven bien .¿ A vos también ?

saludos !!
__________________
Recursos visual basic
  #4 (permalink)  
Antiguo 22/09/2006, 22:21
 
Fecha de Ingreso: abril-2005
Mensajes: 351
Antigüedad: 20 años
Puntos: 3
Hola si es cierto no lo havia provado y por lo que veo esas lineas estan de mas o porlomenos no veo ningun cambio

Saludos
__________________
www.leandroascierto.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:35.