MUDAR COR DE FONTE DO GRID

WEBIER 22/04/2010 01:02:09
#339890
possuo o seguinte código:
   
Private Sub FormatarGridFiltros()
With Grid

.Clear
.Cols = 5
.Rows = 2

.ColWidth(0) = 0
.ColWidth(1) = 0
.ColWidth(2) = 1300
.ColWidth(3) = 1000
.ColWidth(4) = 3700


.TextMatrix(0, 1) = [Ô]COD_OS[Ô]
.TextMatrix(0, 2) = [Ô]SITUAÇÃO[Ô]
.TextMatrix(0, 3) = [Ô]STATUS[Ô]
.TextMatrix(0, 4) = [Ô]CLIENTE[Ô]


[ô]colocar os cabeçalho em negrito
Dim X As Integer
For X = 0 To .Cols - 1
.Col = X
.Row = 0
.CellFontBold = True
Next X

[ô]centralizar o titulo
Dim f As Integer
For f = 0 To .Cols - 1
.Row = 0
.Col = f
.CellAlignment = flexAlignCenterCenter
Next f

Do Until RS.EOF

[ô]mudar a cor da coluna
Dim i As Integer
For i = 1 To .Rows - 1
.Row = i
.Col = 2: .CellBackColor = &HC0FFFF
Next


Grid.Redraw = False


Grid.Redraw = True

If Not IsNull(RS!Cod_OS) Then .TextMatrix(.Rows - 1, 1) = RS!Cod_OS
If Not IsNull(RS!var_STATUS) Then .TextMatrix(.Rows - 1, 2) = RS!var_STATUS
If Not IsNull(RS!var_STATUS_OS) Then .TextMatrix(.Rows - 1, 3) = RS!var_STATUS_OS
If Not IsNull(RS!NOME) Then .TextMatrix(.Rows - 1, 4) = RS!NOME
RS.MoveNext
.Rows = .Rows + 1

Loop

.Rows = .Rows - 1

End With
End Sub


esse código preenche meu flexgrid

na coluna 3 eu mostro o var_STATUS_OS que somente pode ser exbido 2 textos... ou apararece [Ô]ABERTO[Ô] ou aparece [Ô]FECHADO[Ô]

Como eu faço para se aparecer ABERTO ele ficar com a cor da fonte azul e quando aparecer FECHADO ele aparecer da cor vermelha?

OBS: somente a cor da fonte....
WILLVIDAL 22/04/2010 09:41:54
#339908
Resposta escolhida
[ô]ZEBRAR
Dim Acor As ColorConstants
For X = MSS.FixedRows To MSS.Rows - 1
If MSS.TextMatrix(X, 4) = [Ô]ABERTO[Ô] Then
Acor = vbBLUE
Else
Acor = vbRED
End If

For Y = MSS.FixedCols To MSS.Cols - 1
MSS.Col = Y
MSS.Row = X
MSS.CellForeColor = Acor
Next Y

Next X

mais ou menos isso ?
WILLVIDAL 22/04/2010 09:43:18
#339909
nesse caso ele pegou valores da coluna 4, depois é só vc acertar ai q oluna ele pega o aberto ou fechado
WEBIER 22/04/2010 14:39:19
#339943
Ficou perfeito amigo...

Como eu faço para somente a celula que tem o nome ABERTO ou FECHADO mudar a cor e as outras celulas das outras colunas ficarem normal?
WILLVIDAL 22/04/2010 23:37:39
#340005
Ai vc tira o segundo for:

Dim Acor As ColorConstants
For X = MSS.FixedRows To MSS.Rows - 1
If MSS.TextMatrix(X, 4) = [Ô]ABERTO[Ô] Then
Acor = vbBLUE
Else
Acor = vbRED
End If

MSS.Col = 3 [ô]a coluna do aberto ou fechado
MSS.Row = X
MSS.CellForeColor = Acor

Next X
WEBIER 23/04/2010 01:00:01
#340007
Amigo está dando problema somente na cor da celula da ultima linha

Independente se é [Ô]ABERTO[Ô] ou [Ô]FECHADO[Ô] ela sempre fica vermelha.

As outras linhas estão corretas... somente a ultima q tá dando esse erro!
WILLVIDAL 23/04/2010 10:34:37
#340021
Estranho viu, aqui comigo funciona normal, é q meu sistema faz quase isso q vc precisa,
é algum detalhe que ta fazendo esse erro.
ASHKATCHUP 23/04/2010 10:58:14
#340023

If Ucase(MSS.TextMatrix(X, 4)) = [Ô]ABERTO[Ô] Then
WEBIER 23/04/2010 16:27:47
#340064
fiz com o UCASE e ficou a mesma coisa...

Olha o codigo completo:

  Private Sub FormatarGridFiltros()
With Grid

.Clear
.Cols = 5
.Rows = 2

.ColWidth(0) = 0
.ColWidth(1) = 0
.ColWidth(2) = 1300
.ColWidth(3) = 1000
.ColWidth(4) = 3700


.TextMatrix(0, 1) = [Ô]COD_OS[Ô]
.TextMatrix(0, 2) = [Ô]SITUAÇÃO[Ô]
.TextMatrix(0, 3) = [Ô]STATUS[Ô]
.TextMatrix(0, 4) = [Ô]CLIENTE[Ô]


[ô]colocar os cabeçalho em negrito
Dim X As Integer
For X = 0 To .Cols - 1
.Col = X
.Row = 0
.CellFontBold = True
Next X

[ô]centralizar o titulo
Dim f As Integer
For f = 0 To .Cols - 1
.Row = 0
.Col = f
.CellAlignment = flexAlignCenterCenter
Next f

Do Until RS.EOF

[ô]mudar a cor da coluna
Dim i As Integer
For i = 1 To .Rows - 1
.Row = i
.Col = 2: .CellBackColor = &HC0FFFF
Next

Grid.Redraw = False

[ô]mudar a cor da fonte
Dim Acor As ColorConstants
For X = .FixedRows To .Rows - 1
If .TextMatrix(X, 3) = [Ô]ABERTO[Ô] Then
Acor = vbBlue
Else
Acor = vbRed
End If

.Col = 3 [ô]a coluna do aberto ou fechado
.Row = X
.CellForeColor = Acor

Next X

Grid.Redraw = True

If Not IsNull(RS!Cod_OS) Then .TextMatrix(.Rows - 1, 1) = RS!Cod_OS
If Not IsNull(RS!var_STATUS) Then .TextMatrix(.Rows - 1, 2) = RS!var_STATUS
If Not IsNull(RS!var_STATUS_OS) Then .TextMatrix(.Rows - 1, 3) = RS!var_STATUS_OS
If Not IsNull(RS!NOME) Then .TextMatrix(.Rows - 1, 4) = RS!NOME
RS.MoveNext
.Rows = .Rows + 1

Loop

.Rows = .Rows - 1

End With
End Sub
Tópico encerrado , respostas não são mais permitidas