QUANT REGISTROS X CELLBACKCOLOR
                    Faço a formatação de meu flexgrid assim:
o problema tá na hora de [Ô]colorir[Ô] as colunas 4 e 10
quando são poucos registros funciona beleza, estou com um problema quando é grande a quantidade de registros. ELE TRAVA O PC QUANDO VAI PREENCHER O GRID
Tenho uns clientes com 3000 produtos que estão passando pro esses problemas....
se eu tirar essa parte de colorir as celulas ele mostra normalmente os 3000 produtos, mas se for para colorir ele trava.
A maquina é boa e tem muita memoria... mas mesmo assim trava.
Que devo fazer para colorir uma ou mais colunas e preencher um grid com muitos registros sem pesa?
                
            With Grid
    
    .Clear
    .Cols = 11
    .Rows = 2
    
    .ColWidth(0) = 0
    .ColWidth(1) = 0
    .ColWidth(2) = 3850
    .ColWidth(3) = 800
    .ColWidth(4) = 800
    .ColWidth(5) = 800
    .ColWidth(6) = 800
    .ColWidth(7) = 800
    .ColWidth(8) = 800
    .ColWidth(9) = 800
    .ColWidth(10) = 800
    
    .TextMatrix(0, 1) = [Ô]COD[Ô]
    .TextMatrix(0, 2) = [Ô]PRODUTO[Ô]
    .TextMatrix(0, 3) = [Ô]QUANT[Ô]
    .TextMatrix(0, 4) = [Ô]CUSTO[Ô]
    .TextMatrix(0, 5) = [Ô]FRETE[Ô]
    .TextMatrix(0, 6) = [Ô]IMP.[Ô]
    .TextMatrix(0, 7) = [Ô]VALOR[Ô]
    .TextMatrix(0, 8) = [Ô]LUCRO[Ô]
    .TextMatrix(0, 9) = [Ô]IMP.[Ô]
    .TextMatrix(0, 10) = [Ô]VENDA[Ô]
    
    [ô]colocar os cabeçalho em negrito
    For X = 0 To .Cols - 1
    .Col = X
    .Row = 0
    .CellFontBold = True
    Next X
    
    [ô]ALINHAMENTO
    .ColAlignment(2) = 1
    
    [ô]centralizar o titulo
    For f = 0 To .Cols - 1
    .Row = 0
    .Col = f
    .CellAlignment = flexAlignCenterCenter
    Next f
    
    Do Until Rs.EOF
    
    .Redraw = False
    
    [ô]mudar a cor da coluna
    Dim i
    For i = 1 To .Rows - 1
    .Row = i
    .Col = 4:   .CellBackColor = &HC0FFFF
    .Col = 10:   .CellBackColor = &HC0C0FF
    Next
     
    .Redraw = True
    
    If Not IsNull(Rs!var_CodEnt) Then .TextMatrix(.Rows - 1, 1) = Rs!var_CodEnt
    If Not IsNull(Rs!var_desc) Then .TextMatrix(.Rows - 1, 2) = Rs!var_desc
    If Not IsNull(Rs!var_Quant) Then .TextMatrix(.Rows - 1, 3) = Rs!var_Quant
    If Not IsNull(Rs!var_custo) Then .TextMatrix(.Rows - 1, 4) = Format(Rs!var_custo, [Ô]##,##0.00[Ô])
    If Not IsNull(Rs!var_frete) Then .TextMatrix(.Rows - 1, 5) = Format(Rs!var_frete, [Ô]##,##0.00[Ô])
    If Not IsNull(Rs!var_impcompra) Then .TextMatrix(.Rows - 1, 6) = Format(Rs!var_impcompra, [Ô]##,##0.00[Ô])
    If Not IsNull(Rs!var_vlrcompra) Then .TextMatrix(.Rows - 1, 7) = Format(Rs!var_vlrcompra, [Ô]##,##0.00[Ô])
    If Not IsNull(Rs!Var_Lucro) Then .TextMatrix(.Rows - 1, 8) = Format(Rs!Var_Lucro, [Ô]##,##0.00[Ô])
    If Not IsNull(Rs!var_impvenda) Then .TextMatrix(.Rows - 1, 9) = Format(Rs!var_impvenda, [Ô]##,##0.00[Ô])
    If Not IsNull(Rs!var_vlrvenda) Then .TextMatrix(.Rows - 1, 10) = Format(Rs!var_vlrvenda, [Ô]##,##0.00[Ô])
    Rs.MoveNext
    
    .Rows = .Rows + 1
    
    Loop
    
    .Rows = .Rows - 1
    
End Witho problema tá na hora de [Ô]colorir[Ô] as colunas 4 e 10
 .Redraw = False
    
    [ô]mudar a cor da coluna
    Dim i
    For i = 1 To .Rows - 1
    .Row = i
    .Col = 4:   .CellBackColor = &HC0FFFF
    .Col = 10:   .CellBackColor = &HC0C0FF
    Next
     
    .Redraw = Truequando são poucos registros funciona beleza, estou com um problema quando é grande a quantidade de registros. ELE TRAVA O PC QUANDO VAI PREENCHER O GRID
Tenho uns clientes com 3000 produtos que estão passando pro esses problemas....
se eu tirar essa parte de colorir as celulas ele mostra normalmente os 3000 produtos, mas se for para colorir ele trava.
A maquina é boa e tem muita memoria... mas mesmo assim trava.
Que devo fazer para colorir uma ou mais colunas e preencher um grid com muitos registros sem pesa?
                    Experimenta colocar um Doevents dentro do loop.
                
            
                    Desculpa a minha falta de conhecimento...
mas como seria usando o Doevents
            mas como seria usando o Doevents
                    O Doevents libera memoria, evitando o travamento.
Coloque-o antes do next.
            Coloque-o antes do next.
                    Webier,
faz assim:
            faz assim:
With Grid
      .visible = false
[txt-color=#006400]...
... seu código
...[/txt-color]
      .visible = true
end With
                
                    usando a opção do RICARDO TOMIM:
O Flexgrid desaparece e nao mostra nada
usando a opção do HUGOSSOUZA:
Continua travando do mesmo jeito
Alguem tem mais alguma coisa?
            O Flexgrid desaparece e nao mostra nada
usando a opção do HUGOSSOUZA:
Continua travando do mesmo jeito
Alguem tem mais alguma coisa?
                    Tem um erro de lógica no seu código.
Cada vez que você preenche o grid, você altera a cor das colunas.
Você pode colocar sua rotina de alterar a cor da grade antes de fazer o loop ou alterar o seu loop.
            Cada vez que você preenche o grid, você altera a cor das colunas.
Você pode colocar sua rotina de alterar a cor da grade antes de fazer o loop ou alterar o seu loop.
                    tem como dar um exemplo dessa modificação do loop ?
                
            
                    WEBIER, boa noite.
Experimenta mudar o MSFlexGrid para o MSHFlexGrid. Ele é mais robusto e evita problemas. Agora me dia o seguinte, usando o MSHFlexGrid testei seu código sem os dados do Banco e não travou, o que aconteceu foi uma demora muito grande para a montagem do grid, agora sem chances de usar o MSFlexGrid, ta travando mesmo.
Se você mudar para o MSHFlexGrid e continuiar travando poste novamente ok???
            Experimenta mudar o MSFlexGrid para o MSHFlexGrid. Ele é mais robusto e evita problemas. Agora me dia o seguinte, usando o MSHFlexGrid testei seu código sem os dados do Banco e não travou, o que aconteceu foi uma demora muito grande para a montagem do grid, agora sem chances de usar o MSFlexGrid, ta travando mesmo.
Se você mudar para o MSHFlexGrid e continuiar travando poste novamente ok???
                    Faça um teste com esse código:
            Dim i
With Grid
    .Visible = False
    
    .Clear
    .Cols = 11
    .Rows = 2
    
    .ColWidth(0) = 0
    .ColWidth(1) = 0
    .ColWidth(2) = 3850
    .ColWidth(3) = 800
    .ColWidth(4) = 800
    .ColWidth(5) = 800
    .ColWidth(6) = 800
    .ColWidth(7) = 800
    .ColWidth(8) = 800
    .ColWidth(9) = 800
    .ColWidth(10) = 800
    
    .TextMatrix(0, 1) = [Ô]COD[Ô]
    .TextMatrix(0, 2) = [Ô]PRODUTO[Ô]
    .TextMatrix(0, 3) = [Ô]QUANT[Ô]
    .TextMatrix(0, 4) = [Ô]CUSTO[Ô]
    .TextMatrix(0, 5) = [Ô]FRETE[Ô]
    .TextMatrix(0, 6) = [Ô]IMP.[Ô]
    .TextMatrix(0, 7) = [Ô]VALOR[Ô]
    .TextMatrix(0, 8) = [Ô]LUCRO[Ô]
    .TextMatrix(0, 9) = [Ô]IMP.[Ô]
    .TextMatrix(0, 10) = [Ô]VENDA[Ô]
    
    [ô]colocar os cabeçalho em negrito
    For X = 0 To .Cols - 1
      .Col = X
      .Row = 0
      .CellFontBold = True
    Next X
    
    [ô]ALINHAMENTO
    .ColAlignment(2) = 1
    
    [ô]centralizar o titulo
    For f = 0 To .Cols - 1
      .Row = 0
      .Col = f
      .CellAlignment = flexAlignCenterCenter
    Next f
    
    
    i = 1
    Do Until Rs.EOF
    
      .Redraw = False
    
      [ô]mudar a cor da coluna
      
      [ô]For i = 1 To .Rows - 1
        .Row = i
        .Col = 4:   .CellBackColor = &HC0FFFF
        .Col = 10:   .CellBackColor = &HC0C0FF
      [ô]Next
      
      .Redraw = True
      
      If Not IsNull(Rs!var_CodEnt) Then .TextMatrix(.Rows - 1, 1) = Rs!var_CodEnt
      If Not IsNull(Rs!var_desc) Then .TextMatrix(.Rows - 1, 2) = Rs!var_desc
      If Not IsNull(Rs!var_Quant) Then .TextMatrix(.Rows - 1, 3) = Rs!var_Quant
      If Not IsNull(Rs!var_custo) Then .TextMatrix(.Rows - 1, 4) = Format(Rs!var_custo, [Ô]##,##0.00[Ô])
      If Not IsNull(Rs!var_frete) Then .TextMatrix(.Rows - 1, 5) = Format(Rs!var_frete, [Ô]##,##0.00[Ô])
      If Not IsNull(Rs!var_impcompra) Then .TextMatrix(.Rows - 1, 6) = Format(Rs!var_impcompra, [Ô]##,##0.00[Ô])
      If Not IsNull(Rs!var_vlrcompra) Then .TextMatrix(.Rows - 1, 7) = Format(Rs!var_vlrcompra, [Ô]##,##0.00[Ô])
      If Not IsNull(Rs!Var_Lucro) Then .TextMatrix(.Rows - 1, 8) = Format(Rs!Var_Lucro, [Ô]##,##0.00[Ô])
      If Not IsNull(Rs!var_impvenda) Then .TextMatrix(.Rows - 1, 9) = Format(Rs!var_impvenda, [Ô]##,##0.00[Ô])
      If Not IsNull(Rs!var_vlrvenda) Then .TextMatrix(.Rows - 1, 10) = Format(Rs!var_vlrvenda, [Ô]##,##0.00[Ô])
      Rs.MoveNext
      
      .Rows = .Rows + 1
      
      i = i + 1
      
    Loop
    
    .Rows = .Rows - 1
    .Visible = True
    
End With
                
                        Tópico encerrado , respostas não são mais permitidas