MUDAR A COR DA FONTE NO LISTVIEW

ADRIANOM 06/02/2011 20:17:50
#364513
Gostaria de saber como faço para destacar a fonte dos meus ítens quando o estoque Total ficasse com valor menor ou igual ao do estoque mínimo, ficando as linha de cada ítem em vermelho!

A listview chama-se lstRegistro e já está aberta e preenchida...
uso ADO...
Como seria?!
FUTURA 07/02/2011 09:18:07
#364544
depois q vc preencheu o list, da um for next, e a linha q o estoque ta zerado, vc muda o forecolor..

for i=1 to lstregistro.listitems.count
if lstregistro.listitems(i).subitem(colunadoseuestoque) <=0 then
lstregitro.listitems(i).forecolor = vbred
lstregitro.listitems(i).subitems(1) forecolor = vbred
lstregitro.listitems(i).subitems(2)forecolor = vbred
endif
next..
mais ou menos isso..
ADRIANOM 08/02/2011 19:02:02
#364742
FUTURA...
O código que vc me passou deu erro.... então alterei assim..:
 
Dim i As Integer
For i=1 to lstregistro.listitems.count
If lstregistro.listitems(i).subitem(10) <=lstregistro.listitems(i).subitem(9) then
lstregistro.listitems(i).forecolor = vbred
End If
Next


Só que ele altera a cor de fonte apenas do código...os outros itens das outras colunas continuam com a mesma cor....
Gostaria que alterasse toda a linha entende?

Como seria?
CHARLESTON10 09/02/2011 08:39:43
#364794
Nao seria melhor mudar a cor da linha, o back color ?
ADRIANOM 09/02/2011 15:07:19
#364862
Charleston10, amigo.. o seu exemplo está funcionando perfeitamente, mas quando adapto para o meu sistema ele preenche apenas a metade do meu lstRegistro.
No seu exemplo, possui um listview com 7 colunas, o meu é um listview com 15.

Vou postar a minha adaptação!

  

Public Function Colorir()
Dim I As Double
If lstRegistro.ListItems.Count <> 0 Then
picBg.Width = lstRegistro.Width
picBg.Height = lstRegistro.ListItems(1).Height * (lstRegistro.ListItems.Count)
picBg.ScaleHeight = lstRegistro.ListItems.Count
picBg.ScaleWidth = 1
picBg.DrawWidth = 1
picBg.Cls

For I = 1 To lstRegistro.ListItems.Count

If InStr(lstRegistro.ListItems(I).SubItems(10), UCase(lstRegistro.ListItems(I).SubItems(9))) Then [ô]Estoque total = Estoque mínimo
picBg.Line (0, I - 1)-(1, I), &HC0C0FF, BF [ô]Goiaba
lstRegistro.Picture = picBg.Image
End If
Next

End If

If lstRegistro.ListItems.Count = 0 Then
lstRegistro.Picture = Picture1.Image
End If

End Function

Public Sub PreencheLista()
Dim lst As Variant
[ô]--------------------------------------------------
Set RSPRO = New ADODB.Recordset
RSPRO.Open [Ô]SELECT * FROM PRODUTOS ORDER BY PRODUTO[Ô], CNN, adOpenStatic, adLockOptimistic
lstRegistro.ListItems.Clear
[ô]simula a função de replace com condição
If RSPRO.RecordCount = 0 Then
Set lst = lstRegistro.ListItems.Add(, , [Ô]<VAZIO>[Ô], , 1)
Else
[ô]Preenche a lista
Do While Not RSPRO.EOF
Set lst = lstRegistro.ListItems.Add(, , RSPRO!CODIGO, , 1)
With lst
.SubItems(1) = RSPRO!Produto & [Ô][Ô]
.SubItems(2) = RSPRO!ICUSTO & [Ô][Ô]
.SubItems(3) = RSPRO!IMPOSTOS & [Ô][Ô]
.SubItems(4) = RSPRO!FCUSTO & [Ô][Ô]
.SubItems(5) = RSPRO!M_LUCRO_A & [Ô][Ô]
.SubItems(6) = RSPRO!M_LUCRO_B & [Ô][Ô]
.SubItems(7) = RSPRO!FVALOR_A & [Ô][Ô]
.SubItems(8) = RSPRO!FVALOR_B & [Ô][Ô]
.SubItems(9) = RSPRO!QTD_MIN & [Ô][Ô]
.SubItems(10) = RSPRO!QTD_TOTAL & [Ô][Ô]
.SubItems(11) = RSPRO!OBSERVACAO & [Ô][Ô]
.SubItems(12) = RSPRO!INCLUSAO & [Ô][Ô]
.SubItems(13) = RSPRO!ALTERACAO & [Ô][Ô]
.SubItems(14) = RSPRO!USUARIO & [Ô][Ô]
End With
RSPRO.MoveNext
Loop
End If

End Sub

Private Sub Form_Load()

[ô]centralizar o form independente da resolução
Me.Move (frmPrincipal.Width - Me.Width) / 2, (frmPrincipal.Height - Me.Height) / 3

[ô]conecta o banco de dados - função
CONECTA True

[ô]preenche o lstRegistro
Call PreencheLista

[ô]Configuração de Picutre para colorir o List View
picBg.BackColor = lstRegistro.BackColor
picBg.ScaleMode = vbTwips
picBg.BorderStyle = vbBSNone
picBg.AutoRedraw = True
picBg.Visible = False

Dim mRow As ListItem
Me.ScaleMode = vbTwips


[ô]Irá verificar o estoque e informar ql está próximo de esgotar
Call Colorir

End Sub



Lembrando que copiei os dois PictureBox, que são usados para realizar o exemplo...

MAS NÃO FICOU LEGAL.. Tem como corrigir para que preencha corretamente as 15 Colunas?
CHARLESTON10 09/02/2011 21:55:39
#364919
Tenta adaptar seu listview sem a barra de rolagem que move o list para direita esquerda
eu testei aqui agora no meu era isso..
coloquei mais colunas
porem apareceu a barra de rolagem para poder visualizar as outras
porem nao colori a lista, pois o Picture esta ajustado com a largura da lista nao da coluna

adapta o list até ficar sem rolagem
ADRIANOM 10/02/2011 12:53:41
#364982
Charleston10... Não entendi.!!
CHARLESTON10 12/02/2011 10:56:59
#365228
Tipo assim, se seu ListView estiver muitas colunas, algumas colunas podem nao aparecer no listview, entao automaticamente ele criara uma barra de rolagem
que o usuario podera mover para a direita ou esquerda para visualizar essas colunas que nao estao aparecendo.

Ex porq nao esta colorindo as outras colunas

A configuração do Picture ( picBg ) está ajustada para a largura do listview
[ô]picBg.Width = lstRegistro.Width

Se caso algumas colunas nao estao aparecendo em seu list isso mostra que a soma total da larguras das colunas estao maior que a largura (width) do lstRegistro
isso mostra que o Picture nao conseguira colorir, porque esta adaptada a largura do lstRegistro.

Voce tem duas opções:
Primeira Adaptar a largura das colunas do seu listview para nao ultrapassar a largura do list

Segunda Adapatar a configuração do Picture para pegar a soma total da largura das colunas dos seu listview
ou seja:

picBg.width = somatotal da largura das colunas[ô]

For i = 0 to listview.listitems.count
picBg.width = picBg.width + listview.coluna(i).with
next

mais ou menos isso

ADRIANOM 12/02/2011 15:36:42
#365243
E onde seria inserido este código?

 For i = 0 to listview.listitems.count
picBg.width = picBg.width + listview.coluna(i).with
next


no Private Sub Form_Load?
ADRIANOM 14/02/2011 11:28:59
#365380
Alguém será que me ajuda pelo amor de Deus
Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas