Jack06 te paso una rutina para implemtarlo al la version 5 de Microsoft windows common controls
Aplica el estilo cebra, lineas de la grilla, y el Full Row select
Option Explicit
'Autor: Leandro Ascierto
'Web: www.leandroascierto.com.ar
'Refencia: http://www.leandroascierto.com.ar/foro/index.php?topic=75.0
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function CreateCompatibleBitmap Lib "gdi32.dll" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hdc As Long) As Long
Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
Private Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function SetPixelV Lib "gdi32.dll" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
Private Declare Function GetVersion Lib "kernel32" () As Long
Private Type LVBKIMAGE
ulFlags As Long
hbm As Long
pszImage As String
cchImageMax As Long
xOffsetPercent As Long
yOffsetPercent As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Const LVM_FIRST As Long = &H1000
Private Const LVM_GETITEMRECT As Long = (LVM_FIRST + 14)
Private Const LVM_GETHEADER As Long = (LVM_FIRST + 31)
Private Const LVM_SETTEXTBKCOLOR As Long = (LVM_FIRST + 38)
Private Const LVM_SETBKIMAGE As Long = (LVM_FIRST + 68)
Private Const LVM_SETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 54)
Private Const LVM_GETEXTENDEDLISTVIEWSTYLE As Long = (LVM_FIRST + 55)
Private Const HDM_FIRST As Long = &H1200
Private Const HDM_GETITEMRECT As Long = (HDM_FIRST + 7)
Private Const LVS_EX_GRIDLINES As Long = &H1
Private Const LVS_EX_FULLROWSELECT As Long = &H20
Private Const LVBKIF_STYLE_TILE As Long = &H10
Private Const LVBKIF_FLAG_TILEOFFSET As Long = &H100
Private Const LVBKIF_SOURCE_HBITMAP As Long = &H1
Private Const CLR_NONE As Long = &HFFFFFFFF
Public Sub AltLVBackGround(LV As ListView, ByVal BackColorOne As OLE_COLOR, ByVal BackColorTwo As OLE_COLOR)
Dim lExStyle As Long
Dim hdc As Long
Dim DC As Long
Dim hBMP As Long
Dim OldBmp As Long
Dim i As Long
Dim tLBI As LVBKIMAGE
Dim hHeader As Long
Dim LVItemHeight As Long
Dim CHItemHeight As Long
Dim Rec As RECT
If LV.View = lvwReport And LV.ListItems.Count Then
hHeader = SendMessage(LV.hwnd, LVM_GETHEADER, 0&, ByVal 0&)
Call SendMessage(hHeader, HDM_GETITEMRECT, 0&, Rec)
CHItemHeight = Rec.Bottom - Rec.Top
Call SendMessage(LV.hwnd, LVM_GETITEMRECT, 0&, Rec)
LVItemHeight = Rec.Bottom - Rec.Top
hdc = GetDC(0)
DC = CreateCompatibleDC(0)
hBMP = CreateCompatibleBitmap(hdc, 1, LVItemHeight * 2)
ReleaseDC 0&, hdc
OldBmp = SelectObject(DC, hBMP)
For i = 0 To LVItemHeight - 1
SetPixelV DC, 0, i, BackColorOne
SetPixelV DC, 0, LVItemHeight + i, BackColorTwo
Next
If (GetVersion And &HFF) > 5 Then tLBI.yOffsetPercent = LVItemHeight - CHItemHeight
tLBI.ulFlags = LVBKIF_SOURCE_HBITMAP Or LVBKIF_FLAG_TILEOFFSET Or LVBKIF_STYLE_TILE
tLBI.hbm = hBMP
SendMessage LV.hwnd, LVM_SETBKIMAGE, 0&, tLBI
SendMessage LV.hwnd, LVM_SETTEXTBKCOLOR, 0&, ByVal CLR_NONE
DeleteObject SelectObject(DC, OldBmp)
DeleteDC DC
lExStyle = SendMessage(LV.hwnd, LVM_GETEXTENDEDLISTVIEWSTYLE, 0&, ByVal 0&)
lExStyle = lExStyle Or LVS_EX_GRIDLINES Or LVS_EX_FULLROWSELECT
SendMessage LV.hwnd, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, ByVal lExStyle
End If
End Sub
Forma de uso
Option Explicit
Private Sub Form_Load()
Dim i As Long
Dim LVItem As ListItem
ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "Columna 1"
ListView1.ColumnHeaders.Add , , "Columna 2"
For i = 1 To 100
Set LVItem = ListView1.ListItems.Add(, , "Item " & i)
LVItem.SubItems(1) = "SubItem 1"
Next
Call AltLVBackGround(ListView1, RGB(209, 222, 252), RGB(255, 255, 255))
End Sub
Saludos.