CANT CREATE AUTOREDRAW IMAGE
Boa tarde galera.
Estou usando uma rotina (na base da POG, porém funcional) que colore um listview condicionalmente.
Uso essa mesma forma em minha janela de importação de XML de entrada e da tudo ok.
Sempre funcionou, porem agora estou tentando usa-lo e da o seguinte erro:
Cant Create autoredraw image.
Abaixo minha rotina para colorir o mesmo.
Estou usando uma rotina (na base da POG, porém funcional) que colore um listview condicionalmente.
Uso essa mesma forma em minha janela de importação de XML de entrada e da tudo ok.
Sempre funcionou, porem agora estou tentando usa-lo e da o seguinte erro:
Cant Create autoredraw image.
Abaixo minha rotina para colorir o mesmo.
Picture1.BackColor = lstPesq.BackColor
Picture1.ScaleMode = vbTwips
Picture1.BorderStyle = vbBSNone
Picture1.AutoRedraw = True
Picture1.Visible = False
Dim i As Integer
LastCmd = 1
Picture1.Width = lstPesq.Width
Picture1.Height = lstPesq.ListItems(1).Height * (lstPesq.ListItems.Count)
Picture1.ScaleHeight = lstPesq.ListItems.Count
Picture1.ScaleWidth = 1
Picture1.DrawWidth = 1
[ô]Picture1.BackColor = vbRed
Picture1.Cls
For i = 1 To lstPesq.ListItems.Count
Dim varTudoOk As Boolean
Dim varTemItemAtrasado As Boolean
varTudoOk = False
varTemItemAtrasado = False
Set dsEnche = New ADODB.Recordset
dsEnche.Open [Ô]select codorc from orcamento where codorc=[Ô] & lstPesq.ListItems(i).Text, con, adOpenKeyset, adLockOptimistic
varitematrasado = 0
Set dsDetOrc = New ADODB.Recordset
dsDetOrc.Open [Ô]select min(dataentrega) as data,item from detorcamentos where codorc=[Ô] & dsEnche!codorc, con, adOpenKeyset, adLockOptimistic
If Not dsDetOrc.EOF Then
If IsNull(dsDetOrc!Data) Then
GoTo proximo
End If
[ô] Item.SubItems(4) = Format(dsDetOrc!Data, [Ô]dd/mm/yyyy[Ô])
If Not IsNull(dsDetOrc!Data) Then
If CDate(dsDetOrc!Data) < Date Then
varitematrasado = dsDetOrc!Item
varTemItemAtrasado = True
End If
End If
End If
[ô] se tiver ao menos um item que possui etapa 1 nao concluida
Set dsDetOrc = New ADODB.Recordset
dsDetOrc.Open [Ô]select codorc from detorcamentos where codorc=[Ô] & dsEnche!codorc & [Ô] and temcriacao=[ô]S[ô] and finalizoucriacao=[ô]N[ô][Ô], con, adOpenKeyset, adLockOptimistic
If Not dsDetOrc.EOF Then
Picture1.Line (0, i - 1)-(1, i), vbYellow, BF
GoTo proximo
End If
[ô]=================
[ô] se tiver ao menos um item que possui etapa 2 nao concluida
Set dsDetOrc = New ADODB.Recordset
dsDetOrc.Open [Ô]select codorc from detorcamentos where codorc=[Ô] & dsEnche!codorc & [Ô] and temimpressao=[ô]S[ô] and finalizouimpressao=[ô]N[ô][Ô], con, adOpenKeyset, adLockOptimistic
If Not dsDetOrc.EOF Then
Picture1.Line (0, i - 1)-(1, i), &H80C0FF, BF
GoTo proximo
End If
[ô]=================
[ô] se tiver ao menos um item que possui etapa 3 nao concluida
Set dsDetOrc = New ADODB.Recordset
dsDetOrc.Open [Ô]select codorc from detorcamentos where codorc=[Ô] & dsEnche!codorc & [Ô] and temproducao=[ô]S[ô] and finalizouproducao=[ô]N[ô][Ô], con, adOpenKeyset, adLockOptimistic
If Not dsDetOrc.EOF Then
Picture1.Line (0, i - 1)-(1, i), vbBlue, BF
lstPesq.ListItems(i).ForeColor = cor
GoTo proximo
End If
[ô]=================
[ô] se tiver ao menos um item que possui etapa 4 nao concluida
Set dsDetOrc = New ADODB.Recordset
dsDetOrc.Open [Ô]select codorc from detorcamentos where codorc=[Ô] & dsEnche!codorc & [Ô] and teminstalacao=[ô]S[ô] and finalizouinstalacao=[ô]N[ô][Ô], con, adOpenKeyset, adLockOptimistic
If Not dsDetOrc.EOF Then
Picture1.Line (0, i - 1)-(1, i), &H808080, BF
GoTo proximo
End If
[ô]=================
[ô] aqui pinta de branco se estiver tudo pronto menos a entrega
Set dsDetOrc = New ADODB.Recordset
dsDetOrc.Open [Ô]select codorc from detorcamentos where codorc=[Ô] & dsEnche!codorc & [Ô] and isnull(dataentregou)[Ô], con, adOpenKeyset, adLockOptimistic
If Not dsDetOrc.EOF Then
Picture1.Line (0, i - 1)-(1, i), vbWhite, BF
varTudoOk = True
GoTo proximo
End If
[ô] se cair aqui eh porque esta tudo ok
[ô] pinta de verde
Picture1.Line (0, i - 1)-(1, i), vbGreen, BF
proximo:
If varTemItemAtrasado = True And varTudoOk = False Then
Picture1.Line (0, i - 1)-(1, i), vbRed, BF
End If
Next
lstProdXML.Picture = Picture1.Image
lstProdXML.Refresh
Geralmente esse erro acontece quando você não tem memória suficiente.
Você pode deixar como False e redesenhar manualmente... ou então, você pode diminuir o tamanho do seu picturebox ou a qualidade da imagem...
Abraços!
Você pode deixar como False e redesenhar manualmente... ou então, você pode diminuir o tamanho do seu picturebox ou a qualidade da imagem...
Abraços!
Obrigado pela resposta colega.
Resolvi tirando alguns registros da pesquisa, ai o list diminuiu e passou ok, mas foi um paliativo. A mesma rotina em outra situação ja nao funcionaria.
Como faço isso que voce descreveu DS2t?
Resolvi tirando alguns registros da pesquisa, ai o list diminuiu e passou ok, mas foi um paliativo. A mesma rotina em outra situação ja nao funcionaria.
Como faço isso que voce descreveu DS2t?
Simplesmente deixe :
Picture1.AutoRedraw = True
Como:
Picture1.AutoRedraw = False
Se você precisar redesenhar o picturebox quando ela é minimizada, ou o form sai da tela... Redesenhe no evento Paint.
Picture1.AutoRedraw = True
Como:
Picture1.AutoRedraw = False
Se você precisar redesenhar o picturebox quando ela é minimizada, ou o form sai da tela... Redesenhe no evento Paint.
Desculpa cara nao consegui entender sua ultima frase. Como assim minimizada ?
Tópico encerrado , respostas não são mais permitidas