PROBLEMA EM MUDAR A COR DA FONTE DA COLUNA INTEIRA

WEBIER 27/04/2010 17:39:43
#340397
tenho o seguinte código:

    [ô]mudar a cor da fonte da coluna 3
Dim Acor As ColorConstants
Dim c As Integer
For c = .FixedRows To .Rows - 1

If .TextMatrix(c, 3) = [Ô]ABERTO[Ô] Then
Acor = vbBlue
Else
Acor = vbRed
End If

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

Next c


resumo: na coluna 3 se tiver o texto ABERTO ele deixa a fonte azul e se for FECHADO ele deixa vermelho.

o problema está somente na ultima linha, ou seja... ela sempre eh vermelha... nao importa o texto da celula, ela sempre fica vermelha

onde tah o erro?
WILLVIDAL 27/04/2010 21:02:27
#340403
vc ja tentou colocar um TRIM pra ver se não tem espaços?

Dim Acor As ColorConstants
Dim c As Integer
For c = .FixedRows To .Rows - 1

If ucase(trim(.TextMatrix(c, 3))) = [Ô]ABERTO[Ô] Then
Acor = vbBlue
Else
Acor = vbRed
End If

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

Next c
WILLVIDAL 27/04/2010 21:30:17
#340407
em outro tópico vc passou 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

[ô]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

eu percebi que vc ta [Ô]zebrando[Ô] as colunas enquando preenche a grid,
eu particularmente não preencho a grid desse jeito, acho mais simples ligar a grid à tabela de consulta, assim:
Set MSS.Recordset = RS , antes de tudo

se vc não quer fazer desse jeito, faz o seguinte, preenche primeiro toda a grid, e depois vc formata ela do jeito que vc quer,
mais ou menos assim:

Private Sub FormatarGridFiltros()

With Grid
Do Until RS.EOF
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 +
Loop

Grid.Redraw = False

.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

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

[ô]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

End With
End Sub

isso ta cheio de erros, mas pelo enos siga esse raciocinio....flow

WEBIER 29/04/2010 17:42:46
#340574
baseado na sua explicação vc tah usando os comandos

.Clear
.Cols = 5
.Rows = 2

somente após preencher os campos, sendo assim... dará erro!
WEBIER 30/04/2010 14:33:13
#340646
alguem tem algum ideia?
ASHKATCHUP 30/04/2010 14:44:04
#340649
Posta um projeto como exemplo.
WEBIER 26/05/2010 15:01:02
#342849
Estava viajando!

Segue anexo o projeto com o form que está dando o erro mencionado!

ERRO: sempre o ultimo do grid aparece com a fonte vermelha, independente se é ABERTO ou FECHADO.
MARCELO.TREZE 26/05/2010 15:24:18
#342850
Resposta escolhida
TENTA ISTO

Dim Acor As ColorConstants
Dim c As Integer
For c = .FixedRows To .Rows - 1

If .TextMatrix(c, 3) = [Ô]ABERTO[Ô] Then
Acor = vbBlue
.Col = 3 [ô]a coluna do aberto ou fechado
.Row = c
.CellForeColor = Acor

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

End If
Next c
WEBIER 26/05/2010 17:43:25
#342863
fiz conforme falou:
    Dim Acor As ColorConstants
Dim c As Integer
For c = .FixedRows To .Rows - 1
If .TextMatrix(c, 3) = [Ô]ABERTO[Ô] Then
Acor = vbBlue
.Col = 3 [ô]a coluna do aberto ou fechado
.Row = c
.CellForeColor = Acor
Else
Acor = vbRed
.Col = 3 [ô]a coluna do aberto ou fechado
.Row = c
.CellForeColor = Acor
End If
Next c


o ultimo continua em vermelhor, mesmo sendo ABERTO.

[txt-color=#e80000]OBS: estou anexando novamente o mesmo projeto com 10 registros gerados para maior exemplo.[/txt-color]
MARCELO.TREZE 26/05/2010 17:51:43
#342864
quantas linha fixas vc possui?

por que não inicia o for em 1

a palavra na ultima linha está exatamente como a buscada ou seja todas letras maiusculas
WEBIER 26/05/2010 18:17:46
#342865
fixa somente 1... a do cabeçalho
a palavra está do mesmo jeito das outra acima dela... ou seja, [Ô]ABERTO[Ô]
Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas