• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

electric

[VB 2005] descontador de tempo com timer

45 mensagens neste tópico

Boas, eu ja trabalhei em vb2003 e aprendi umas coisinhas mas agora keria desenvolver 1 programazinho,

so k o meu problema apesar dele ja funcionar é conseguir por o tempo colocado no timer a ser mostrado numa lbl mas a descontar.

o meu programa bazeia-se em :

escolher 1 ficheiro

colocar o tempo numa tbx k ira ser o tempo do timer

ao carregar no btn iniciar o timer passa a true e o tempo começa a contar

quando chegar ao fim desse mxm tempo o programa k escolhi anteriormente arranca

o problema é colocar o tempo a ser mostrado numa lbl mas ao contrrio e polo a cuncionar :\

se me poderem ajudar agradeço, se esta confuso peço desculpa lol eu tento reesplicar melhor ...

[]'s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então fazes assim, no timer_tick pões lblTal.Text = Val(lblTal.Text)  - 1 , tens é de ter previamente o número na label quando o contador fica enabled.

Acho que é isto que queres :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então fazes assim, no timer_tick pões lblTal.Text = Val(lblTal.Text)  - 1 , tens é de ter previamente o número na label quando o contador fica enabled.

Acho que é isto que queres :D

Está bem visto sim senhor

Public Class Form1

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Me.Label1.Text = Val(Label1.Text) - 1
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Timer1.Start()
    End Sub



    Private Sub Label1_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.TextChanged
        If Me.Label1.Text = "0" Then
            Me.Timer1.Stop()
            Me.Label1.Text = "10"
            Form2.Show()
        End If

    End Sub
End Class


0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

nepia n ta a resultar :\ eu tentei tb por como text o nº 25 visto serem 25 segundos mas tb n descontou...

eu deixo aki a baixo o meu codigo pode ser k seja + facil :\

Private Sub BtnEscolher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEscolher.Click
        Dim Resultado As DialogResult
        Resultado = DlgoFicheiro.ShowDialog
        If (Resultado = Windows.Forms.DialogResult.OK) Then
            TbxFicheiro.Text = DlgoFicheiro.FileName

        End If
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr.Tick
        Dim P As New Process
        Try
            If (TbxFicheiro.Text <> "") Then
                P.StartInfo.FileName = TbxFicheiro.Text
                'P.StartInfo.Arguments = TbxTempo.Text
                P.Start()
                P.WaitForInputIdle()
                'Thread.Sleep(2000)
                'P.Kill()
            End If
        Catch ex As Exception
            MessageBox.Show("Ficheiro não encontrado")
        End Try

        LblDescontar.Text = Val(LblDescontar.Text) - 1

    End Sub


    Private Sub BtnIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIniciar.Click

        tmr.Enabled = True
        tmr.Interval = CbxTempos.Text * 1000
        '    TbxDescontar.Text = CbxTempos.Text


    End Sub

    Private Sub BtnParar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnParar.Click
        tmr.Enabled = False
    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse tmr é o timer? se sim esqueceste-te de substituir na linha do Timer1.Tick o Timer1 pelo tmr :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya é mas mxm assim o problema n é dai ...

o k notei é k meto algo a abrir de 15 em 15 segundos e começa a contar kando abre

como n para ta sempre a reabrir aos 15 segundos, logo vai contado -1  -2 e por ai ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim isso eu sei mas por agora n me serve de nd visto não fazer a contagem :\ eu tenho la 15 segundos tenho o codigo como diseste

LblDescontar.Text = Val(LblDescontar.Text) - 1

mas a lbl permanece limpa so kando da a volta aos 15 segundos é k conta -1 passado + 15 segundos -2

e por ai :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

então tens de meter um if lblTal.Text = 0 Then tmr.Enabled = False

:D

e já agora nesse if lbl.text = valor inicial senão fica no 0

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

já tens o label com um valor logo de inicio? Ou seja, se já tem o valor 15 no seu texto...

Se não adiciona lblTal.Text = 15 no evento load da form:)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya mas o k ele me ta a fazer ai é dizer k vai mostrar akela img ou la o k é 15 X

eu keria k esses 15 fossem em tempo real mas em segundos nestes caso

15,14,13....

k é pro ppl ter a noção de kanto tempo falta pra aparecer o k mandei abrir tas a perceber :\

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim isso eu sei mas por agora n me serve de nd visto não fazer a contagem :\ eu tenho la 15 segundos tenho o codigo como diseste

LblDescontar.Text = Val(LblDescontar.Text) - 1

mas a lbl permanece limpa so kando da a volta aos 15 segundos é k conta -1 passado + 15 segundos -2

e por ai :\

Defeniste o valor inicial do lbl? porque senão ele só começa a aparecer do -1 para a frente

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

posta aí o teu código actual, para eu ver qual é o problema ali no visual studio :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bom não sei se é disso porque não testei o código mas não necessitas de estabelecer o intrevalo com código

basta pores nas propriedades do timer 1000 que te faz a contagem em segundos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Private Sub BtnEscolher_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnEscolher.Click
        Dim Resultado As DialogResult
        Resultado = DlgoFicheiro.ShowDialog
        If (Resultado = Windows.Forms.DialogResult.OK) Then
            TbxFicheiro.Text = DlgoFicheiro.FileName

        End If
    End Sub

    Private Sub Tmr_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmr.Tick
        Dim P As New Process
        Try
            If (TbxFicheiro.Text <> "") Then
                P.StartInfo.FileName = TbxFicheiro.Text
                P.Start()
                P.WaitForInputIdle()
            End If
        Catch ex As Exception
            MessageBox.Show("Ficheiro não encontrado")
        End Try

        LblDescontar.Text = Val(LblDescontar.Text) - 1
        If LblDescontar.Text = 0 Then
            tmr.Enabled = False
        End If

    End Sub


    Private Sub BtnIniciar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnIniciar.Click

        tmr.Enabled = True
        tmr.Interval = CbxTempos.Text * 1000


    End Sub

    Private Sub BtnParar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnParar.Click
        tmr.Enabled = False
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        LblDescontar.Text = 15
    End Sub
End Class

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bom não sei se é disso porque não testei o código mas não necessitas de estabelecer o intrevalo com código

basta pores nas propriedades do timer 1000 que te faz a contagem em segundos

sim faz a contagem em segundos so k o meu timer é efenido pelo user ou tas a falar de meter outro timer so pra ontar akilo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bom não sei se é disso porque não testei o código mas não necessitas de estabelecer o intrevalo com código

basta pores nas propriedades do timer 1000 que te faz a contagem em segundos

ele já tem isso nesta linha:

tmr.Interval = CbxTempos.Text * 1000

eu não sei é se ele já tem um valor default no campo CbxTempos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

        tmr.Interval = CbxTempos.Text * 1000

        '    TbxDescontar.Text = CbxTempos.Text

    End Sub

não entendo esta linha, o utilizador escolhe  a velocidade do timer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim faz a contagem em segundos so k o meu timer é efenido pelo user ou tas a falar de meter outro timer so pra ontar akilo ?

então se o user escolher diferente deo valor 1 já nãoo vai descontar em segundos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu tenho o cbx com os valores 15 25 e 55

ele escolhe o valor e este passa a

tmr.Interval = CbxTempos.Text * 1000 ( o 1000 é por causa de passar de segundos pra milisegundos)

agora ao carregar no iniciar o timer começa a correr e o tempo k ele leva a correr é o k o user escolheu na cbx

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é isso ja faz a contagen decrescente

o k fiz foi acrescentar outro timer

meter o

LblDescontar.Text = Val(LblDescontar.Text) - 1

        If LblDescontar.Text = 0 Then

            tmr.Enabled = False

        End If

dentro desse timer novo e polo a correr assim k carrgue no btn iniciar

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu tenho o cbx com os valores 15 25 e 55

ele escolhe o valor e este passa a

tmr.Interval = CbxTempos.Text * 1000 ( o 1000 é por causa de passar de segundos pra milisegundos)

agora ao carregar no iniciar o timer começa a correr e o tempo k ele leva a correr é o k o user escolheu na cbx

ou sou eu que estou a fazer uma grande confusão ou isso não deveria estar aí

apenas


tmr.Interval = 1000

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sim eu tenho o cbx com os valores 15 25 e 55

ele escolhe o valor e este passa a

tmr.Interval = CbxTempos.Text * 1000 ( o 1000 é por causa de passar de segundos pra milisegundos)

agora ao carregar no iniciar o timer começa a correr e o tempo k ele leva a correr é o k o user escolheu na cbx

Mas isso vai alterar é a velocidade do contador, por exemplo se puseres 15 um timer tick vai só ocorrer a cada 15 segundos, logo não é o que tu queres. :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

os valores da combobox deveria estar associados é com o label, i.e eles escolhem o valor inicial do label

não sendo preciso um outro timer

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora