ayuda sobre relojes
hola, antes que nada soy un poco principiante en el lenguaje visual, y queria ver si me pueden aiudar a hacer un RELOJ ANALOGO como el de windows, es para un formulario igual que tenga fecha y hora pero solo necesito el reloj, por favor aiudenme lo mas rapido posible he pasado varias noches sin dormir pensando en como se hace
Hola:
solo tienes que poner una label, o un textbox no editable.
Luego, el caption(label) o el text(textbox) ir cambiandolo cada segundo. Esto lo consigues con el objeto timer.
solo tienes que poner una label, o un textbox no editable.
Luego, el caption(label) o el text(textbox) ir cambiandolo cada segundo. Esto lo consigues con el objeto timer.
Rafa, creo que lo que quiere es un reloj analógico, de manecillas.
He preparado uno muy sencillo que seguro servirá de ejmplo:
Pon un control Timer1 en un formulario, su propiedad interval=1000 y enabled=true
luego agregas un picture control llamado picture1, y metes este código en el timer:
Private Sub Timer1_Timer()
Dim AngH, AngM, AngS As Double
Dim CentroX, CentroY As Double
Dim RelojW, RelojH As Double
Const pi = 3.141592
AngH = Hour(Now) * pi / 6
AngM = Minute(Now) * pi / 30
AngS = Second(Now) * pi / 30
CentroX = Picture1.Width / 2
CentroY = Picture1.Height / 2
RelojW = Picture1.Width / 2.2
RelojH = Picture1.Height / 2.2
Picture1.Cls
Picture1.DrawWidth = 3
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngH) * 0.5, CentroY - RelojH * Cos(AngH) * 0.5), RGB(50, 50, 50)
Picture1.DrawWidth = 2
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngM) * 0.8, CentroY - RelojH * Cos(AngM) * 0.8), RGB(100, 100, 100)
Picture1.DrawWidth = 1
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngS), CentroY - RelojH * Cos(AngS)), RGB(255, 0, 0)
End Sub
P.D. Si cambiamos la propiedad BackColor del picture a blanco quedará más lindo (picture1.backcolor=rgb(255,255,255) )
Saludos.
He preparado uno muy sencillo que seguro servirá de ejmplo:
Pon un control Timer1 en un formulario, su propiedad interval=1000 y enabled=true
luego agregas un picture control llamado picture1, y metes este código en el timer:
Private Sub Timer1_Timer()
Dim AngH, AngM, AngS As Double
Dim CentroX, CentroY As Double
Dim RelojW, RelojH As Double
Const pi = 3.141592
AngH = Hour(Now) * pi / 6
AngM = Minute(Now) * pi / 30
AngS = Second(Now) * pi / 30
CentroX = Picture1.Width / 2
CentroY = Picture1.Height / 2
RelojW = Picture1.Width / 2.2
RelojH = Picture1.Height / 2.2
Picture1.Cls
Picture1.DrawWidth = 3
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngH) * 0.5, CentroY - RelojH * Cos(AngH) * 0.5), RGB(50, 50, 50)
Picture1.DrawWidth = 2
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngM) * 0.8, CentroY - RelojH * Cos(AngM) * 0.8), RGB(100, 100, 100)
Picture1.DrawWidth = 1
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngS), CentroY - RelojH * Cos(AngS)), RGB(255, 0, 0)
End Sub
P.D. Si cambiamos la propiedad BackColor del picture a blanco quedará más lindo (picture1.backcolor=rgb(255,255,255) )
Saludos.
Por cierto, el picture no tiene que ser cuadrado, hay que probar a hacerlo rectangular, que queda muy chulo.
Hola de nuevo.
Siento no haber entendido bien antes tu pregunta.
Espero que consigas solucionar tu problema.
Un saludo
Siento no haber entendido bien antes tu pregunta.
Espero que consigas solucionar tu problema.
Un saludo
no me funciona el reloj, no puedo insertar el codigo
¿a alguien le ha funcionado el reloj de baltasar?
¿a alguien le ha funcionado el reloj de baltasar?
Elena, debería funcionarte. Qué error te da? Dices que no puedes insertar el código, lo que has de hacer es copiar el código tal cual está, sustituyendo al evento TIMER del control.
Me he entretenido un poco jugando con el relojito, y me ha quedado algo más lindo (ya no hace falta asignarle color, lo hace solo) :
Private Sub Timer1_Timer()
Dim AngH, AngM, AngS As Double
Dim CentroX, CentroY As Double
Dim RelojW, RelojH As Double
Const pi = 3.141592
AngH = Hour(Now) * (pi / 6)
AngM = Minute(Now) * (pi / 30)
AngS = Second(Now) * (pi / 30)
CentroX = Picture1.Width / 2
CentroY = Picture1.Height / 2
RelojW = Picture1.Width / 2.2
RelojH = Picture1.Height / 2.2
Picture1.Cls
Picture1.Top = 100
Picture1.Left = Me.Width - Picture1.Width - 200
Picture1.BackColor = BackColor
Picture1.DrawWidth = 3
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngH) * 0.5, CentroY - RelojH * Cos(AngH) * 0.5), RGB(50, 50, 50)
Picture1.DrawWidth = 2
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngM) * 0.8, CentroY - RelojH * Cos(AngM) * 0.8), RGB(100, 100, 100)
Picture1.DrawWidth = 1
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngS), CentroY - RelojH * Cos(AngS)), RGB(255, 0, 0)
For A = 0 To 11
Picture1.Circle (CentroX + RelojW * Sin(A * pi / 6) * 0.95, CentroY - RelojH * Cos(A * pi / 6) * 0.95), 15
Next A
End Sub
Por favor, si alguien más tiene problemas, que lo diga aquí, tal vez se me escape algo.
Saludos
Me he entretenido un poco jugando con el relojito, y me ha quedado algo más lindo (ya no hace falta asignarle color, lo hace solo) :
Private Sub Timer1_Timer()
Dim AngH, AngM, AngS As Double
Dim CentroX, CentroY As Double
Dim RelojW, RelojH As Double
Const pi = 3.141592
AngH = Hour(Now) * (pi / 6)
AngM = Minute(Now) * (pi / 30)
AngS = Second(Now) * (pi / 30)
CentroX = Picture1.Width / 2
CentroY = Picture1.Height / 2
RelojW = Picture1.Width / 2.2
RelojH = Picture1.Height / 2.2
Picture1.Cls
Picture1.Top = 100
Picture1.Left = Me.Width - Picture1.Width - 200
Picture1.BackColor = BackColor
Picture1.DrawWidth = 3
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngH) * 0.5, CentroY - RelojH * Cos(AngH) * 0.5), RGB(50, 50, 50)
Picture1.DrawWidth = 2
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngM) * 0.8, CentroY - RelojH * Cos(AngM) * 0.8), RGB(100, 100, 100)
Picture1.DrawWidth = 1
Picture1.Line (CentroX, CentroY)-(CentroX + RelojW * Sin(AngS), CentroY - RelojH * Cos(AngS)), RGB(255, 0, 0)
For A = 0 To 11
Picture1.Circle (CentroX + RelojW * Sin(A * pi / 6) * 0.95, CentroY - RelojH * Cos(A * pi / 6) * 0.95), 15
Next A
End Sub
Por favor, si alguien más tiene problemas, que lo diga aquí, tal vez se me escape algo.
Saludos
Hola,
Yo he probado el reloj de Baltasar y me ha funcionado perfectamente.
Yo también me he entretenido un poco arreglándolo más.
Me ha parecido una solución muy elegante la que utilizas para hacer el reloj ;-)
Un saludo
sdemingo
Yo he probado el reloj de Baltasar y me ha funcionado perfectamente.
Yo también me he entretenido un poco arreglándolo más.
Me ha parecido una solución muy elegante la que utilizas para hacer el reloj ;-)
Un saludo
sdemingo
También le has puesto día del mes como en los relojes de pulsera? jajaja (yo sí)
Bueno, me alegro de que guste, la verdad, a mí me ha encantado, ;-)
Bueno, me alegro de que guste, la verdad, a mí me ha encantado, ;-)
Hola,
jajaja, no lo he puesto, pero ahora ya me he picado y se lo voy a poner.
Al final acabaremos con una agenda en lugar de un reloj ;-)
Saludos
jajaja, no lo he puesto, pero ahora ya me he picado y se lo voy a poner.
Al final acabaremos con una agenda en lugar de un reloj ;-)
Saludos
Sdemingo:
quiero ver cómo queda ese reloj después de pasar por tus talleres (me lo merezco, no?)
jajajaja ;-)
quiero ver cómo queda ese reloj después de pasar por tus talleres (me lo merezco, no?)
jajajaja ;-)
He encontrado un problema en el reloj, y es que las manecillas daban saltos muy grandes (le he pasado la aspiradora y he engrasado el engranaje).
la línea que calcula el ángulo de las horas ANGH y el de los minutos ANGM las sustituimos por:
AngH = (Hour(Now) + (Minute(Now) / 60)) / 6 * pi
AngM = (Minute(Now) + (Second(Now) / 60)) / 30 * pi
Saludos
la línea que calcula el ángulo de las horas ANGH y el de los minutos ANGM las sustituimos por:
AngH = (Hour(Now) + (Minute(Now) / 60)) / 6 * pi
AngM = (Minute(Now) + (Second(Now) / 60)) / 30 * pi
Saludos
