MSFLEXGRID COM CORES DIFERENTES NAS LINHAS

JAIRMAR 15/12/2009 09:31:16
#329709
Bom dia senhores,

Alguém pode me ajudar , quero que o msflexgrid mestre as linhas com cores de acordo com a condição do campo
[Ô]statusdopedido[Ô]. Se o statusdopedido = 0 mostre a linha em azul, Se o statusdopedido = 1 mostre a linha em verde, se statusdopedido = 2 mostre a linha em vermelho.
Está acontecendo que quanso ele vai para o proximo registo no grid ele assume a cor da condição desse novo registro e muda a cor de todas linhas do grid e não uma por uma .
o fonte está abaixo:

With MSFlexGrid1
[ô]preeche o flex
[ô] Data8.Refresh
Do While Data2.Recordset.Fields([Ô]dataemissao[Ô]) >= wdate

wstatus = Data2.Recordset.Fields([Ô]statuspedido[Ô])
If wstatus = 2 Then .CellForeColor = vbRed [ô] &HC0&
If wstatus = 1 Then .CellForeColor = vbGreen [ô] &H0080FF80&
If wstatus = 0 Then .CellForeColor = vbBlue [ô] &HC00000 [ô] &H00C00000&
If wstatus = -1 Then .CellForeColor = vbBlack [ô] &H0& [ô] [Ô]&H00000000&[Ô]

.TextMatrix(I, 0) = Data2.Recordset.Fields([Ô]numped[Ô])
.TextMatrix(I, 1) = Data2.Recordset.Fields([Ô]dataemissao[Ô])
.TextMatrix(I, 2) = Data2.Recordset.Fields([Ô]dataentrega[Ô])
wcodcli = Data2.Recordset.Fields([Ô]codcli[Ô])
Data3.Recordset.Index = [Ô]primarykey[Ô]
Data3.Recordset.Seek [Ô]=[Ô], wcodcli
If Data3.Recordset.NoMatch Then
wtexto = [Ô]Cliente não cadastro ou excluido[Ô]
Else
wtexto = Data3.Recordset.Fields([Ô]nome[Ô])
End If
.TextMatrix(I, 3) = wtexto
.TextMatrix(I, 4) = Data3.Recordset.Fields([Ô]fone1[Ô])
.TextMatrix(I, 5) = Format(Data2.Recordset.Fields([Ô]Valortotal_Servicos[Ô]), [Ô]currency[Ô])
.TextMatrix(I, 6) = Format(Data2.Recordset.Fields([Ô]Valortotal_pecas[Ô]), [Ô]currency[Ô])
.TextMatrix(I, 7) = Format(Data2.Recordset.Fields([Ô]totalpedido[Ô]), [Ô]currency[Ô])


[ô]proximo registro
Data2.Recordset.MoveNext
If Data2.Recordset.EOF Then GoTo sai
I = I + 1

Loop
TxtNumOS.SetFocus

End With

Obrigado pela ajuda

JAIRMAR 15/12/2009 09:50:16
#329710
retificando a linha acima

wstatus = Data2.Recordset.Fields([Ô]statuspedido[Ô])
If wstatus = 2 Then .ForeColor = vbRed [ô] &HC0&
If wstatus = 1 Then .ForeColor = vbGreen [ô] &H0080FF80&
If wstatus = 0 Then .ForeColor = vbBlue [ô] &HC00000 [ô] &H00C00000&
If wstatus = -1 Then .ForeColor = vbBlack [ô] &H0& [ô] [Ô]&H00000000&[Ô]

o teste avima era outro que deu certo, mas ainda estou com duvida nesse

Obrigado
HUGOSSOUZA 15/12/2009 10:23:33
#329718
JAIRMAR,
você precisa colorir celula por celular.
Ex.:

dim vlContador as Integer

If condicao = 3 Then [ô]verifica a sua condição para colorir a linha
For vlContador = 0 To MSFlexGrid.Cols - 1
MSFlexGrid.Col = vlConta
MSFlexGrid.row = I [txt-color=#006400][ô]usando a sua variavel da linha[/txt-color]
MSFlexGrid.CellBackColor = &HC0C0FF
Next
End If
ROBIU 15/12/2009 14:02:41
#329754
Resposta escolhida
Citação:

Troca esse código
If wstatus = 2 Then .ForeColor = vbRed [ô] &HC0&
If wstatus = 1 Then .ForeColor = vbGreen [ô] &H0080FF80&
If wstatus = 0 Then .ForeColor = vbBlue [ô] &HC00000 [ô] &H00C00000&
If wstatus = -1 Then .ForeColor = vbBlack [ô] &H0& [ô] [Ô]&H00000000&[Ô]


por esta sub

Sub ColorirGrid()
Dim iL As Integer, iC As Integer [ô]Variavel para pegar a linha e a coluna do grid
With HGrid
For iL = 1 To .Rows - 1
For iC = 0 To .Cols - 1
.Col = iC
.Row = iL
If wstatus = 2 Then
.CellForeColor = vbRed
If wstatus = 1 Then
.CellForeColor = vbGreen
ElseIf wstatus = 0 Then
.CellForeColor = vbBlue
ElseIf wstatus = -1 Then
.CellForeColor = vbBlack
End If
Next iC
Next iL
End With

End Sub
IPSOFTNET 12/04/2010 15:23:25
#339135
ve se esta função ajuda vc

Public Function Colorir_Uma_linha(Index_ID As Integer, GradeC As Control, Colunas As Integer, ColorGrade As ColorConstants, ColorLinha As ColorConstants)
Dim IndexLine As Integer
i = 0
Cel = 0
IndexLine = Index_ID

With GradeC
For Cel = 0 To Colunas
.Col = Cel
.Row = IndexLine
.Col = Cel
.CellBackColor = ColorGrade
.CellForeColor = ColorLinha
Next Cel
End With
End Function
Tópico encerrado , respostas não são mais permitidas