Formato en ListVieew.

Iniciado por mdg, 19 Agosto 2007, 06:40 AM

0 Miembros y 1 Visitante están viendo este tema.

mdg

Hola foreros!

antes que nada , gracias de antemano por su ayuda y por su tiempo.

La cuestion seria que intento darle formato a las filas del listvieew, el formato seria una fila color celeste, una color blanca, una color celeste, otra blanca, etc, etc.... y asi en todas las filas.

seria eso posible..?


HaDeS, -

#1
Bueno estuve viendo, y la propiedad Backcolor solo sirve para el fondo de todo el listview, y quedaria maluco hacer que el fondo sea blanco, y que el color de la letra (Forecolor) de una fila sea roja, otra azul, otra roja, etc.
Igual te pongo el codigo por si queres hacer eso, me parece que el objeto mas apropiado en este caso es el Datagrid, pero no estoy muy seguro de ello, consulta a ver si ese es el que te permite intercambiar el color de fondo cada fila.

El codigo en Visual Basic
Código (vb) [Seleccionar]

Private Sub Command1_Click()
Dim Color As Boolean
For i = 1 To ListView1.ListItems.Count
    For j = 1 To ListView1.ListItems(i).ListSubItems.Count
        If Color Then
            ListView1.ListItems(i).ForeColor = vbBlue
            ListView1.ListItems(i).ListSubItems(j).ForeColor = vbBlue
        Else
            ListView1.ListItems(i).ForeColor = vbRed
            ListView1.ListItems(i).ListSubItems(j).ForeColor = vbRed
        End If
    Next j
    Color = Not Color
Next i
ListView1.Refresh
End Sub


o mejor utiliza esta funcion, que en teoria es lo mismo, solo que se evoca de la siguiente forma
Código (vb) [Seleccionar]

CambiaColorxFila Listview1, vbRed, vbBlue

Código (vb) [Seleccionar]

Public Sub CambiaColorxFila(Lview As ListView, Color1 As OLE_COLOR, Color2 As OLE_COLOR)
Dim Color As Boolean
For i = 1 To Lview.ListItems.Count
    For j = 1 To Lview.ListItems(i).ListSubItems.Count
        If Color Then
            Lview.ListItems(i).ForeColor = Color1
            Lview.ListItems(i).ListSubItems(j).ForeColor = Color1
        Else
            Lview.ListItems(i).ForeColor = Color2
            Lview.ListItems(i).ListSubItems(j).ForeColor = Color2
        End If
    Next j
    Color = Not Color
Next i
Lview.Refresh
End Sub


Tenes que tener el Listview de nombre ListView1, el boton de comando de nombre Command1.
Si me equivoco pues corrijanmen :P

Saludos y espero servir de algo

mdg

Gracias compañero, aunque no es lo que busco lo probe y me sirve para algunas cuestiones por ahi , gracias nuevamente.

Pd.: estuve mirando en las propiedades del Grid pero no encontre nada acerca de intercalar color de fondo de las filas...

TUNOVATO

Hace mucho tiempo tuve esa inquietud para mi aplicacion

y buscando encontre y dapte estos code algo rudimentario pero al fin solucion:


1.- Opcion 1

este Utiliza un ListView y un Picturebox para emular los colores el las filas

'funcion que realiza pintar la filas utilizando un control tipo picture
Function ColoreaLv(lv As ListView)

Dim iWidth As Integer, iHeight As Integer
With Picture1
    lv.PictureAlignment = lvwTile
        .AutoRedraw = True
        .AutoSize = True
        .BorderStyle = vbBSNone
        .ScaleMode = vbTwips
        .Top = lv.SelectedItem.Top
        .Width = lv.Width
        .Height = lv.SelectedItem.Height * 2
            iWidth = lv.Width
            iHeight = lv.SelectedItem.Height
            Picture1.Line (0, 0)-(iWidth, iHeight), vbRed, BF '&HC0FFC0
            lv.Picture = Picture1.Image
End With
End Function


2.- Opcion 2
este Utiliza un ListView y un Picturebox para emular los colores el las filas

'/*******************************************************************/
'***************RUTINA PARA PINTAR LINEAS EL LISTVIEW****************
'/*******************************************************************/

'este esta en prueba
Private Sub PintarListview()
    Dim i As Integer

'****** Inicializacion del Picture1  ******
    Picture1.BackColor = ListView1.BackColor
    Picture1.ScaleMode = vbTwips
    Picture1.BorderStyle = vbBSNone
    Picture1.AutoRedraw = True
    Picture1.Visible = False
'****** Finacializacion del Picture1  ******

'****** Inicializacion adaptando al ancho y largo del las lineas del Listview  ******
    Picture1.Width = ListView1.Width
    Picture1.Height = ListView1.ListItems(1).Height * (ListView1.ListItems.Count)
    Picture1.ScaleHeight = ListView1.ListItems.Count
    Picture1.ScaleWidth = 1
    Picture1.DrawWidth = 1
    Picture1.Cls
'****** Finalizacion adaptando al ancho y largo del las lineas del Listview  ******

'****** Bucle para pintar las lineas del Listview  ******
    For i = 1 To ListView1.ListItems.Count
       If i Mod 2 = 0 Then
         
         'LINEA VERDE
         Picture1.Line (0, i - 1)-(1, i), vbGreen, BF
       
       Else
         
         'LINEA AMARILLA
         Picture1.Line (0, i - 1)-(1, i), vbYellow, BF
       End If
    Next
   
    ListView1.Picture = Picture1.Image

End Sub



aca el pack de code:
http://www.savefile.com/files/993442



mdg

eso es esacto lo que buscaba, gracias por tu ayuda compañero, pueden cerrar el tema.-