MUDAR A COR DA FONTE NO LISTVIEW
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?!
A listview chama-se lstRegistro e já está aberta e preenchida...
uso ADO...
Como seria?!
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..
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..
FUTURA...
O código que vc me passou deu erro.... então alterei assim..:
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?
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?
Nao seria melhor mudar a cor da linha, o back color ?
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!
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?
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?
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
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
Charleston10... Não entendi.!!
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
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
E onde seria inserido este código?
no Private Sub Form_Load?
For i = 0 to listview.listitems.count
picBg.width = picBg.width + listview.coluna(i).with
next
no Private Sub Form_Load?
Alguém será que me ajuda pelo amor de Deus
Tópico encerrado , respostas não são mais permitidas