Autor
|
Tema: Cronometro regresivo (Leído 15,869 veces)
|
SγиtαxEяяoя
Desconectado
Mensajes: 154
|
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 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
Mensajes: 9.878
|
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
Mensajes: 154
|
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 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
Mensajes: 9.878
|
vamos, que no es dificil SyntaxError404Pero si empeizas a usar if's anidados te puedes acabar liando. Aquí tienes el source del siguiente form: http://elektrostudios.tk/WindowsApplication3.zipPublic Class Form1 Dim Run_Sound As Boolean = False Dim Run_Program As Boolean = False Dim TotalTime As Long Dim Time_Elapsed_Watch As New Stopwatch Dim Time_Remaining_Span As New TimeSpan() Dim WithEvents CountDown_Timer As New Timer Dim TimeIsOut As Boolean = False Dim Want_To_Stop As Boolean #Region " Form " Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load RadioButton1.Tag = "sound" RadioButton2.Tag = "program" 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 Private Sub NumericUpDown1_ValueChanged(sender As Object, e As EventArgs) Handles _ NumericUpDown1.ValueChanged, _ NumericUpDown2.ValueChanged, _ NumericUpDown3.ValueChanged TotalTime = (NumericUpDown1.Value * 3600000) _ + (NumericUpDown2.Value * 60000) _ + (NumericUpDown3.Value * 1000) End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click TimeIsOut = False Want_To_Stop = False CountDown_Start() While Not TimeIsOut : Application.DoEvents() : End While If Not Want_To_Stop Then Time_Success() End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Want_To_Stop = True End Sub #End Region #Region " Procedures " Private Sub CountDown_Start() Time_Remaining_Span = TimeSpan.FromMilliseconds(TotalTime + 1000) Time_Elapsed_Watch.Start() CountDown_Timer.Start() End Sub Private Sub CountDown_Timer_Tick(sender As Object, e As EventArgs) Handles CountDown_Timer.Tick Dim TimeRemaining As TimeSpan = Time_Remaining_Span - Time_Elapsed_Watch.Elapsed If Want_To_Stop Then TimeIsOut = True : Time_Elapsed_Watch.Reset() : CountDown_Timer.Stop() Try NumericUpDown1.Value = String.Format("{0:00}", CLng(Math.Floor(TimeRemaining.TotalHours)) Mod 999999999999999999) NumericUpDown2.Value = String.Format("{0:00}", CLng(Math.Floor(TimeRemaining.TotalMinutes)) Mod 60) NumericUpDown3.Value = String.Format("{0:00}", CLng(Math.Floor(TimeRemaining.TotalSeconds)) Mod 60) Catch TimeIsOut = True Time_Elapsed_Watch.Reset() CountDown_Timer.Stop() End Try End Sub Private Sub Time_Success() If Run_Sound Then MsgBox("Reproducir sonido") ElseIf Run_Program Then MsgBox("Ejecutar proceso") Else Throw New Exception("Wrong option") End If End Sub #End Region End Class
Saludos.
|
|
« Última modificación: 24 Mayo 2013, 17:41 pm por EleKtro H@cker »
|
En línea
|
|
|
|
SγиtαxEяяoя
Desconectado
Mensajes: 154
|
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
Mensajes: 9.878
|
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
|
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
|
|
|
|
SγиtαxEяяoя
Desconectado
Mensajes: 154
|
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
Mensajes: 9.878
|
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
Mensajes: 154
|
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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
cronometro
Programación Visual Basic
|
miguecapo
|
2
|
2,298
|
1 Julio 2005, 17:12 pm
por CodeName47/GEDZAC
|
|
|
Cronometro
Electrónica
|
abderraman
|
0
|
2,235
|
8 Marzo 2006, 20:59 pm
por abderraman
|
|
|
cronometro
Programación Visual Basic
|
maxnet
|
6
|
3,122
|
24 Marzo 2006, 06:42 am
por juanjoxx
|
|
|
Cronometro
« 1 2 3 »
Programación Visual Basic
|
kikev10
|
20
|
9,776
|
8 Agosto 2006, 17:03 pm
por elmaro
|
|
|
Cronometro en VBS :p
Scripting
|
Novlucker
|
4
|
8,128
|
28 Junio 2008, 02:05 am
por Novlucker
|
|