Cómo cambiar el color de fondo del Control TreeView

Seleccione idioma Seleccione idioma
Id. de artículo: 178491 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo muestra cómo cambiar el color de fondo del control TreeView para ajustar los requisitos de interfaz de usuario.

Más información

El archivo de biblioteca de controles personalizados, comctl32.dll, versión 4.70 o posterior, se requiere para cambiar el color de fondo de TreeView. Este archivo está disponible al instalar Internet Explorer versión 4.0 o posterior. Tenga en cuenta que este archivo no es actualmente redistribuible. Si necesita este archivo, debe requerir a los usuarios instalar Internet Explorer 4.0. Revise la información sobre los derechos de uso y redistribución para Microsoft Internet Explorer ubicado en:
http://www.microsoft.com/ie/

- y -

http://technet.microsoft.com/en-us/ie/bb219517.aspx

Debe tienes preguntas acerca de la licencia de Internet, póngase en contacto con ieak@microsoft.com.

Para cambiar el color de fondo de un control TreeView, puede llamar a las siguientes funciones de API de Windows:
  • SendMessage - envía el mensaje especificado a una ventana o ventanas.
  • GetWindowLong - recupera información acerca de la ventana especificada.
  • SetWindowLong - cambia un atributo de la ventana especificada.
La sección siguiente muestra cómo crear un proyecto de ejemplo que muestra cómo utilizar estas funciones para cambiar el color de fondo. La sección se supone que tiene la versión correcta del archivo comctl32.dll instalado en el equipo.

Nota: Si la presentación de la copia de Windows está establecido para 256 colores o menos, utilizando un color interpolado como el color de fondo producirá resultados poco satisfactorios. Esto es porque el TreeView y la mayoría de los otros controles de Windows no puede mostrar texto sobre un fondo interpolado. Cambie el último parámetro de la llamada a SendMessage a RGB(200, 255, 200) para ver este efecto.

Nota : Microsoft recomienda que no es Utilice este método para cambiar el color de fondo con la versión de mscomctl.ocx del control TreeView. Si lo hace, es responsabilidad suya.

Pasos para crear proyecto de ejemplo

  1. Inicie un nuevo proyecto EXE estándar en Visual Basic. Se creará Form1 de manera predeterminada.
  2. Agregue una referencia a los controles comunes de Microsoft completando los pasos siguientes:
  3. En el menú proyecto, haga clic en componentes.
  4. En la lista controles, consulte Microsoft Windows Common Controls.
  5. Haga clic en Aceptar para cerrar el cuadro de diálogo componentes.
  6. Agregue un control TreeView y un CommandButton a Form1.
  7. Copie el código siguiente en la ventana código del formulario Form1:
          Option Explicit
    
          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&
    
          Dim frmlastForm As Form
    
          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
          End Sub
    
          Private Sub Command1_Click()
             Dim lngStyle As Long
     
             Call SendMessage(TreeView1.hWnd, _
                               TVM_SETBKCOLOR, _
                               0, _
                               ByVal RGB(255, 0, 0))  'Change the background
                                                      'color to red.
    
          ' Now reset the style so that the tree lines appear properly
             lngStyle = GetWindowLong(TreeView1.hWnd, GWL_STYLE)
             Call SetWindowLong(TreeView1.hWnd, _
                               GWL_STYLE, _
                               lngStyle - TVS_HASLINES)
             Call SetWindowLong(TreeView1.hWnd, GWL_STYLE, lngStyle)
          End Sub
    
    					
  8. En el menú <B>Ejecutar</B>, haga clic en <B>Inicio</B> o presione la tecla F5 para iniciar el programa.
  9. Haga clic en el control CommandButton. El color de fondo TreeView cambia a rojo.

Referencias

Documentación de Platform SDK en las siguientes funciones:
  • SendMessage
  • GetWindowLong
  • SetWindowLong

Propiedades

Id. de artículo: 178491 - Última revisión: viernes, 11 de marzo de 2005 - Versión: 2.4
La información de este artículo se refiere a:
  • Microsoft Visual Basic 5.0 Learning Edition
  • Microsoft Visual Basic 6.0 Edición de aprendizaje
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
Palabras clave: 
kbmt kbhowto KB178491 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 178491

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com