USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  temporizador
fjralberto
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 26/06/2008 10:09 hs            
Bom dia pessoal!
Estou tentando criar um temporizador...

De maneira que em um formulário, eu possuo um flexgrid e um label!
Na medida que eu lançar ou subtrair valores nos campos dos grids ele já some e atualize constantemente no label!

Fiz um código parecido com isso e usei um TIMER... só que não está dando certo, pois ele lê todos os valores e soma... mas ele está me jogando um resultado negativo no label e também os valores ocilam na medida em que eu clico em certos campos do grid.


Segue o código!

Private Sub Timer2_Timer()
Dim tot As Double

If Grid.Cols > 1 Then

For L = 1 To Grid.Rows - 1
    For C = 1 To Grid.Cols - 1

                                            With Grid
                                                   tot = CDbl(tot + (.TextMatrix(L, C) = .Text))
                                            End With

                                
    Next C
Next L

Else
End If
lblTotal.Caption = tot
tot = 0
End Sub


OBS: O intervalor do TIMER está como 1 miless...

Alberto

"Em tijolo em tijolo a casa sai!"
Autor: Eu mesmo.
TÓPICO EDITADO
 
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
Postada em 26/06/2008 10:23 hs            
É mais fácil você criar uma sub para isto
ex:
 
Sub Soma()
With Grid
For L = 1 To Grid.Rows - 1
    For C = 1 To Grid.Cols - 1
     With Grid
      tot = CDbl(tot + (.TextMatrix(L, C) = .Text))
     End With
  Next C
Next L
LblTotal.Caption=tot
end sub
 
 
como usar, chame esta sub ao se dar o enter, na flexgrid
 
ex:
 
...Select Case KeyAscii
Case vbKeyReturn, vbKeyTab
'move para a proxima celula.
Soma ' chama a sub que foi criada
With Grid....

 
     
fjralberto
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 26/06/2008 10:35 hs            
Tudo bom querido Marcelo...hauahauh... mesmo fazendo da forma como vc sugeriu... continuou a dar o mesmo erro.. ele começa a contar negativamente... muito loco o negócio!

Alberto

"Em tijolo em tijolo a casa sai!"
Autor: Eu mesmo.
   
fjralberto
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 26/06/2008 10:39 hs            
Eu não sei porque, mas acho que o erro ta aqui!

tot = CDbl(tot + (.TextMatrix(L, C) = .TEXT))

mais expecificamente no ultimo argumento .TEXT

Alberto

"Em tijolo em tijolo a casa sai!"
Autor: Eu mesmo.
   
Treze
Pontos: 2843 Pontos: 2843
SÃO VICENTE
SP - BRASIL
ENUNCIADA !
Postada em 26/06/2008 10:50 hs            
Desculpe faça assim
 
Sub Soma()
Dim Tot As Double
With Grid
For L = 1 To .Rows - 1
  For C = 2 To .Cols - 1
  If .TextMatrix(L, C) <> "" Then
      Tot = Tot + .TextMatrix(L, C)
      End If
  Next C
Next L
End With
lbltotal.Caption = Tot
End Sub
 
coloque na seguinte posição :
 
Private Sub Grid_KeyPress(KeyAscii As Integer)
If Grid.Col > 1 Then
On Error Resume Next
With Grid
If KeyAscii = 13 Or KeyAscii = 9 Then
Soma ' <--- chame aqui a função
.Col = .Col + 1
KeyAscii = 0
ElseIf KeyAscii = 8 Then
.Text = Left(.Text, Len(.Text) - 1)
KeyAscii = 0
End If
...
 
 
Obs. agora se chamar no timer também funcionará
 
Private Sub Timer2_Timer()
Soma
End Sub
   
fjralberto
SANTO ANDRÉ
SP - BRASIL
ENUNCIADA !
Postada em 26/06/2008 10:55 hs            
aíiiiiiiiii sim ein.... agora foi...

Obrigado + 1 vez...

Quando eu terminar uns ajustes aqui.. eu mando pra vc!!!

Abraços!

Alberto

"Em tijolo em tijolo a casa sai!"
Autor: Eu mesmo.
   
Página(s): 1/2      PRÓXIMA »

CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página