DATAGRID ESTILO ZEBRA?

LEANDRO.BUENO 27/11/2009 14:08:32
#328681
ola amigos,
pesquisei bastante e não consegui achar uma solução para deixar um datagrid estilo zebra (cor sim cor não) rs

Alguem sabe como fazer?

Grato,
ALVAROVB2009 27/11/2009 15:19:46
#328683
Leandro, olha datagrid eu tb não sei, más pq vc não utilizar o flexgrid e/ou msflexgrid, além de ter mais controle é mais simples.
Segue como zebrar um flexgrid

Function EImpar(ByVal iNum As Long) As Boolean
[ô]Verifica se o número é impar
[ô]Se for impar a função retorna True.
[ô]Se for par a função retorna False.
EImpar = (iNum Mod 2)
End Function

Sub FlexCores(lCorPar As Long, lCorImpar As Long)
Dim iLinha As Integer
SeuMSFlexGrid.FillStyle = flexFillRepeat
For iLinha = 1 To SeuMSFlexGrid.Rows - 1
With SeuMSFlexGrid
.Row = iLinha
If EImpar(iLinha) Then [ô]Se a linha for impar:
[ô]Seleciona a partir da primeira coluna
.Col = 1
[ô]Seleciona até a última coluna
.ColSel = .Cols - 1
[ô]Aplica a cor
.CellBackColor = lCorImpar
Else [ô]Se a linha for par:
[ô]Seleciona a partir da primeira coluna
.Col = 1
[ô]Seleciona até a última coluna
.ColSel = .Cols - 1
[ô]Aplica a cor
.CellBackColor = lCorPar
End If
End With
Next
SeuMSFlexGrid.FillStyle = flexFillSingle
End Sub

[ô]Sintaxe:
FlexCores(Cor das linhas pares, Cor das linhas impares)
[ô]Exemplo:
FlexCores(&HFFFFFF, &HC0FFFF)
DUSK 29/11/2009 08:28:37
#328776
LEANDRO,
ESTA FUNÇÃO PEGUEI AQUI MESMO NO VBMANIA E EH EXCELENTE

<<< NO FORM >>>
ZebraFlex MSFlexGrid1, &HE0E0E0
[ô]DEPOIS DA VIRGULA EH A COR Q VC QUER Q A LINHA FIQUE

[ô]<<< NO MODULO >>>
Public Sub ZebraFlex(ByVal flx As MSFlexGridLib.MSFlexGrid, Optional ByVal CorZ As Long = vbInfoBackground)
Dim i As Integer, j As Integer, ImpPar As Integer
With flx
ImpPar = (.FixedRows Mod 2)
.Redraw = False
[ô]Loop para ler todas as linhas menos as fixas
For i = .FixedRows To .Rows - 1
[ô]Seleciona a linha
.Row = i
[ô]Loop para ler todas as colunas do grid menos as fixas
For j = .FixedCols To .Cols - 1
[ô]Seleciona a coluna
.Col = j
[ô]Se o resto da divisão do nr da linha por 2 for diferente do ImpPar, então
[ô]pinta com a cor informada, se não pinta com a cor de fundo do grid
If (i Mod 2) <> ImpPar Then .CellBackColor = CorZ _
Else .CellBackColor = .BackColor
Next j
Next i
[ô]Redesenha o grid
.Redraw = True
End With
End Sub
Tópico encerrado , respostas não são mais permitidas