elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Cronometro regresivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Cronometro regresivo  (Leído 15,816 veces)
SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #10 en: 24 Mayo 2013, 16:43 pm »

Humm, gracias el codigo que me das Electro.. tal parece no funciona... cuando selecciona la funcion de "sonido o proceso" esta automaticamente se inicia sin nisiquiera transcurrir el tiempo

 mira te paso todo el codigo que llevo hasta ahora


Código:
Public Class Form1
    Dim Hora As Integer
    Dim Segundo As Integer
    Dim Minutos As Integer
    Dim Mx As Integer

    Private Sub CalcularyMostrar()
        TextBox1.Text = Hora.ToString.PadLeft(2, "0") 'para rellenar en caso que sea menor que dos digitos
        TextBox2.Text = Minutos.ToString.PadLeft(2, "0")
        TextBox3.Text = Segundo.ToString.PadLeft(2, "0")
    End Sub

    
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox3.Text = "" Then
            MsgBox("Indica el tiempo para Iniciar")
            Exit Sub
        End If
        Segundo = TextBox3.Text
        Minutos = TextBox2.Text
        Hora = TextBox1.Text
        Timer1.Enabled = True
  
    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Mx = Mx - 1
        If Mx = 0 Or Mx = -1 Then
            Mx = 9
            Segundo = Segundo - 1
            If Segundo = -1 Then
                Segundo = 59
                Minutos = Minutos - 1
                If Minutos = 0 Then
                    Minutos = 59
                    Hora = Hora - 1
                End If
            End If
            If Hora = 0 Then
                If Minutos = 0 Then
                    If Segundo = 0 Then
                        TextBox3.Text = "00"
                        Timer1.Enabled = False

                        'Aqui es donde termina el tiempo, y es donde tiene que
                        'inicar alguna de las variables "sonido o proceso"

                        Exit Sub
                    End If
                End If
            End If
            CalcularyMostrar()
        End If
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Enabled = False
        My.Computer.Audio.Stop()
    End Sub


    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Label1.Text = Date.Now.ToLongTimeString
    End Sub

End Class


no se que es lo que no comprendo, pero no funciona :/


« Última modificación: 24 Mayo 2013, 17:01 pm por SyntaxError404 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Cronometro regresivo
« Respuesta #11 en: 24 Mayo 2013, 17:00 pm »

gracias el codigo que me das Electro.. tal parece no funciona...

En ningúna parte de tú código veo que hayas usado el código que te he mostrado, tampoco veo que hayas declarado las variables de mi ejemplo.

PD: Aunque tampoco voy a testear un código sin que me des detalles de porque "no funciona"

Saludos!


En línea



SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #12 en: 24 Mayo 2013, 17:08 pm »

En ningúna parte de tú código veo que hayas usado el código que te he mostrado, tampoco veo que hayas declarado las variables de mi ejemplo.

PD: Aunque tampoco voy a testear un código sin que me des detalles de porque "no funciona"

Saludos!

Detalles: cuando selecciona la funcion de "sonido o proceso" esta automaticamente se inicia sin nisiquiera transcurrir el tiempo


 

Si, lo se lo elimine.. pues no se la forma correcta de como insertarlo

Código:
Public Class Form1
    Dim Hora As Integer
    Dim Segundo As Integer
    Dim Minutos As Integer
    Dim Mx As Integer
    Dim Run_Sound As Boolean = False
    Dim Run_Program As Boolean = False

    Private Sub CalcularyMostrar()
        TextBox1.Text = Hora.ToString.PadLeft(2, "0") 'para rellenar en caso que sea menor que dos digitos
        TextBox2.Text = Minutos.ToString.PadLeft(2, "0")
        TextBox3.Text = Segundo.ToString.PadLeft(2, "0")
    End Sub


    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If TextBox3.Text = "" Then
            MsgBox("Indica el tiempo para Iniciar")
            Exit Sub
        End If
        Segundo = TextBox3.Text
        Minutos = TextBox2.Text
        Hora = TextBox1.Text
        Timer1.Enabled = True

    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Mx = Mx - 1
        If Mx = 0 Or Mx = -1 Then
            Mx = 9
            Segundo = Segundo - 1
            If Segundo = -1 Then
                Segundo = 59
                Minutos = Minutos - 1
                If Minutos = 0 Then
                    Minutos = 59
                    Hora = Hora - 1
                End If
            End If
            If Hora = 0 Then
                If Minutos = 0 Then
                    If Segundo = 0 Then
                        TextBox3.Text = "00"
                        Timer1.Enabled = False

                       If Run_Sound Then
                            ' play wav
                        ElseIf Run_Program Then
                            ' process.start()
                        Else
                            Throw New Exception("Wrong option")
                        End If


                        Exit Sub
                    End If
                End If
            End If
            CalcularyMostrar()
        End If
    End Sub


    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Timer1.Enabled = False
        My.Computer.Audio.Stop()
    End Sub


    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Label1.Text = Date.Now.ToLongTimeString
    End Sub

    Private Sub RadioButtons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.Click, RadioButton2.Click
        Select Case sender.tag.tolower
            Case "sound" : Run_Sound = True : Run_Program = False
            Case "program" : Run_Program = True : Run_Sound = False
            Case Else : Throw New Exception("Wrong tagname")
        End Select
    End Sub
End Class
« Última modificación: 24 Mayo 2013, 17:11 pm por SyntaxError404 » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Cronometro regresivo
« Respuesta #13 en: 24 Mayo 2013, 17:36 pm »

vamos, que no es dificil SyntaxError404

Pero si empeizas a usar if's anidados te puedes acabar liando.

Aquí tienes el source del siguiente form: http://elektrostudios.tk/WindowsApplication3.zip

Código
  1. Public Class Form1
  2.  
  3.    Dim Run_Sound As Boolean = False
  4.    Dim Run_Program As Boolean = False
  5.  
  6.    Dim TotalTime As Long
  7.    Dim Time_Elapsed_Watch As New Stopwatch
  8.    Dim Time_Remaining_Span As New TimeSpan()
  9.    Dim WithEvents CountDown_Timer As New Timer
  10.  
  11.    Dim TimeIsOut As Boolean = False
  12.    Dim Want_To_Stop As Boolean
  13.  
  14.  
  15. #Region " Form "
  16.  
  17.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  18.        RadioButton1.Tag = "sound"
  19.        RadioButton2.Tag = "program"
  20.    End Sub
  21.  
  22.    Private Sub RadioButtons_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
  23.                                                                                           RadioButton1.Click, _
  24.                                                                                           RadioButton2.Click
  25.        Select Case sender.tag.tolower
  26.            Case "sound" : Run_Sound = True : Run_Program = False
  27.            Case "program" : Run_Program = True : Run_Sound = False
  28.            Case Else : Throw New Exception("Wrong tagname")
  29.        End Select
  30.  
  31.    End Sub
  32.  
  33.    Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles _
  34.                                                                      NumericUpDown1.ValueChanged, _
  35.                                                                      NumericUpDown2.ValueChanged, _
  36.                                                                      NumericUpDown3.ValueChanged
  37.  
  38.        TotalTime = (NumericUpDown1.Value * 3600000) _
  39.                  + (NumericUpDown2.Value * 60000) _
  40.                  + (NumericUpDown3.Value * 1000)
  41.  
  42.    End Sub
  43.  
  44.    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  45.        TimeIsOut = False
  46.        Want_To_Stop = False
  47.        CountDown_Start()
  48.        While Not TimeIsOut : Application.DoEvents() : End While
  49.        If Not Want_To_Stop Then Time_Success()
  50.    End Sub
  51.  
  52.    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
  53.        Want_To_Stop = True
  54.    End Sub
  55.  
  56. #End Region
  57.  
  58. #Region " Procedures "
  59.  
  60.    Private Sub CountDown_Start()
  61.        Time_Remaining_Span = TimeSpan.FromMilliseconds(TotalTime + 1000)
  62.        Time_Elapsed_Watch.Start()
  63.        CountDown_Timer.Start()
  64.    End Sub
  65.  
  66.    Private Sub CountDown_Timer_Tick(sender As Object, e As EventArgs) Handles CountDown_Timer.Tick
  67.  
  68.        Dim TimeRemaining As TimeSpan = Time_Remaining_Span - Time_Elapsed_Watch.Elapsed
  69.  
  70.        If Want_To_Stop Then TimeIsOut = True : Time_Elapsed_Watch.Reset() : CountDown_Timer.Stop()
  71.  
  72.        Try
  73.            NumericUpDown1.Value = String.Format("{0:00}", CLng(Math.Floor(TimeRemaining.TotalHours)) Mod 999999999999999999)
  74.            NumericUpDown2.Value = String.Format("{0:00}", CLng(Math.Floor(TimeRemaining.TotalMinutes)) Mod 60)
  75.            NumericUpDown3.Value = String.Format("{0:00}", CLng(Math.Floor(TimeRemaining.TotalSeconds)) Mod 60)
  76.        Catch
  77.            TimeIsOut = True
  78.            Time_Elapsed_Watch.Reset()
  79.            CountDown_Timer.Stop()
  80.        End Try
  81.  
  82.    End Sub
  83.  
  84.    Private Sub Time_Success()
  85.        If Run_Sound Then
  86.            MsgBox("Reproducir sonido")
  87.        ElseIf Run_Program Then
  88.            MsgBox("Ejecutar proceso")
  89.        Else
  90.            Throw New Exception("Wrong option")
  91.        End If
  92.    End Sub
  93.  
  94. #End Region
  95.  
  96. End Class

Saludos.
« Última modificación: 24 Mayo 2013, 17:41 pm por EleKtro H@cker » En línea



SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #14 en: 24 Mayo 2013, 18:02 pm »

Veo que el codigo es muy diferente, cabe mencionar que uso VB.NET 2008

Al ver tu codigo, vi cosas que no habia visto antes  :-\

quede algo confundido, pues por lo que XresH me explico de otra manera.... siendo el mismo proceso pero con codigo diferente

pero se agradece tu intencion por ayudarme.. el codigo ahora si funciona, justo ahora mire tu ejemplo y a segun lo que entendi decidi crear uno nuevo y si funciono
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Cronometro regresivo
« Respuesta #15 en: 24 Mayo 2013, 18:16 pm »

Veo que el codigo es muy diferente

Sólamente he usado los códigos de ejemplo que te puse, con alguna que otra modificación.

El proyecto está hecho en VS2012, VB.NET

Saludos
En línea



XresH


Desconectado Desconectado

Mensajes: 384



Ver Perfil WWW
Re: Cronometro regresivo
« Respuesta #16 en: 25 Mayo 2013, 01:30 am »

Veo que el codigo es muy diferente, cabe mencionar que uso VB.NET 2008

Al ver tu codigo, vi cosas que no habia visto antes  :-\

quede algo confundido, pues por lo que XresH me explico de otra manera.... siendo el mismo proceso pero con codigo diferente

pero se agradece tu intencion por ayudarme.. el codigo ahora si funciona, justo ahora mire tu ejemplo y a segun lo que entendi decidi crear uno nuevo y si funciono

No vamos a explicarte el código de la misma forma, tenemos maneras distintas de programar, cosa que es normal.

Lograr mismos resultados con diferentes métodos es algo común y corriente.

Por lo que no vamos a explicartelo de la misma forma, jamas, porque tanto electro como yo tenemos nuestra forma de hacer las cosas, lo importante es que entiendas las ideas que te explicamos y los coódigos expuestos, para que lo apliques junto con tu conocimiento actual.

Pudiste resolver tus dudas al final? reitero lo importante es que comprendas lo que te planteamos!

Saludos.
En línea

[ - Si eres programador y quieres que tus proyectos esten en mi blog(con o sin source), consúltame! - ]
Entra A Mi Blog De Programación | | Dudas en este post :| | >>Clic para ir al Post<<
SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #17 en: 25 Mayo 2013, 22:43 pm »

Miren esta manera mucho mas sencilla de usar el cronometro

Public Class Form1
    Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click
        tmrWatch.Start()
    End Sub
    Private Sub btnStop_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnStop.Click
        tmrWatch.Stop()
    End Sub
    Private Sub tmrWatch_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles tmrWatch.Tick
        txtTenths.Text -= 1
        If txtTenths.Text = -1 Then
            txtTenths.Text = 9
            txtSeconds.Text -= 1
            If txtSeconds.Text = -1 Then
                txtSeconds.Text = 59
                txtMinutes.Text -= 1
                If txtMinutes.Text = -1 Then
                    txtMinutes.Text = 59
                    txtHours.Text -= 1
                    If txtHours.Text = -1 Then
                        txtHours.Text = 23
                        txtDays.Text -= 1
                        If txtDays.Text = -1 Then
                            tmrWatch.Stop()
                            txtTenths.Text = "0"
                            txtSeconds.Text = "0"
                            txtMinutes.Text = "0"
                            txtHours.Text = "0"
                            txtDays.Text = "0"
                        End If
                    End If
                End If
            End If
        End If
    End Sub
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.866



Ver Perfil
Re: Cronometro regresivo
« Respuesta #18 en: 26 Mayo 2013, 00:06 am »

Te parece más sencillo porque aún no has aprendido a dominar un select case para evitar tanta cantidad de if's o usar el StopWatch como en el ejemplo que te puse, podrías practicar con ellos.

Quizás te parezca más sencillo con if's pero a mi por lo menos no me parece una forma práctica de hacerlo, además es un poco inteligible y da sensación de "desordenado".
Sabemos el propósito de esos if's, pero si no lo supieramos entonces costaría de adivinarlo a la primera y habría que leer ese bloque de código varías veces para saber que hace tanto If,
aparte no recuerdo quien fue el que te comentó que el Timer no es tán preciso como el StopWatch, pero es algo que debiste tomar en cuenta.

un saludo!

En línea



SγиtαxEяяoя

Desconectado Desconectado

Mensajes: 154


Ver Perfil
Re: Cronometro regresivo
« Respuesta #19 en: 26 Mayo 2013, 01:09 am »

No vamos a explicarte el código de la misma forma, tenemos maneras distintas de programar, cosa que es normal.

Lograr mismos resultados con diferentes métodos es algo común y corriente.

Por lo que no vamos a explicartelo de la misma forma, jamas, porque tanto electro como yo tenemos nuestra forma de hacer las cosas, lo importante es que entiendas las ideas que te explicamos y los coódigos expuestos, para que lo apliques junto con tu conocimiento actual.

Pudiste resolver tus dudas al final? reitero lo importante es que comprendas lo que te planteamos!

Saludos.



Si, logre lo que esperaba.. Gracias a ustedes dos por su colaboracion :)
En línea

Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
cronometro
Programación Visual Basic
miguecapo 2 2,293 Último mensaje 1 Julio 2005, 17:12 pm
por CodeName47/GEDZAC
Cronometro
Electrónica
abderraman 0 2,231 Último mensaje 8 Marzo 2006, 20:59 pm
por abderraman
cronometro
Programación Visual Basic
maxnet 6 3,108 Último mensaje 24 Marzo 2006, 06:42 am
por juanjoxx
Cronometro « 1 2 3 »
Programación Visual Basic
kikev10 20 9,751 Último mensaje 8 Agosto 2006, 17:03 pm
por elmaro
Cronometro en VBS :p
Scripting
Novlucker 4 8,103 Último mensaje 28 Junio 2008, 02:05 am
por Novlucker
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines