Ejemplo 1
Colocar
un
control Shape redondo,
y
3
controles
llamados Horas, Minutos y Segundos como la siguiente imagen
Line
Tambin colocar un control timer llamado Timer1 con el Interval en 1000
Cdigo:
Texto planoImprimir
1. Private Sub Timer1_Timer()
2.
Const Radianes = 3.1415927 / 180
3.
4.
Horas.X2 = 2500 + Sin(Hour(Now) * 30 * Radianes) * 1000
5.
Horas.Y2 = 2500 - Cos(Hour(Now) * 30 * Radianes) * 1000
6.
7.
Minutos.X2 = 2500 + Sin(Minute(Now) * 6 * Radianes) * 1500
8.
Minutos.Y2 = 2500 - Cos(Minute(Now) * 6 * Radianes) * 1500
9.
10.
Segundos.X2 = 2500 + Sin(Second(Now) * 6 * 3.1415927 / 180) * 2000
11.
Segundos.Y2 = 2500 - Cos(Second(Now) * 6 * 3.1415927 / 180) * 2000
12. End Sub
Ejemplo 2
Este es otro ejemplo de un reloj anlogico. Colocar en el formulario un control
Picturebox donde se dibujar el reloj, y colocar un Timer
Cdigo fuente en el Form 1
Texto planoImprimir
1. Option Explicit
2.
3. Private Const PI = 3.14159265
4.
5. Private Sub Reloj()
6. Static last_time As Date
7.
8. Dim cx As Single
9. Dim cy As Single
10. Dim num As Single
11. Dim radius As Single
12. Dim theta As Single
13.
14.
If last_time = Now Then Exit Sub
15.
16.
last_time = Now
17.
[Link]
18.
[Link] = vbBlue
19.
cx = [Link] / 2
20.
cy = [Link] / 2
21.
22.
' Horas
23.
num = 5 * (DatePart("h", last_time) + DatePart("n", last_time) / _
24.
60 + DatePart("s", last_time) / 3600)
25.
theta = MinutesToRadians(num)
26.
radius = [Link] * 0.3
27.
[Link] = 3
28.
[Link] (cx, cy)-Step(radius * Cos(theta), radius * Sin(theta))
29.
30.
' Los Minutos
31.
num = DatePart("n", last_time)
32.
theta = MinutesToRadians(num)
33.
radius = [Link] * 0.3
34.
[Link] = 2
35.
[Link] (cx, cy)-Step(radius * Cos(theta), radius * Sin(theta))
36.
37.
' Los segundos
38.
num = DatePart("s", last_time)
39.
40.
41.
42.
theta = MinutesToRadians(num)
radius = [Link] * 0.4
[Link] = 1
[Link] (cx, cy)-Step(radius * Cos(theta), radius * Sin(theta))
43. End Sub
44. Private Sub DrawFace()
45. Dim r1 As Single
46. Dim r2 As Single
47. Dim r3 As Single
48. Dim cx As Single
49. Dim cy As Single
50. Dim i As Integer
51. Dim theta As Single
52.
53.
[Link] = True
54.
[Link] = vbRed
55.
cx = [Link] / 2
56.
cy = [Link] / 2
57.
r1 = [Link] * 0.45
58.
r2 = [Link] * 0.4
59.
r3 = [Link] * 0.35
60.
61.
For i = 1 To 60
62.
theta = MinutesToRadians(i)
63.
If i Mod 5 = 0 Then
64.
[Link] (cx + r1 * Cos(theta), _
65.
cy + r1 * Sin(theta))(cx + r3 * Cos(theta), cy + r3 * Sin(theta))
66.
Else
67.
[Link] (cx + r1 * Cos(theta), _
68.
cy + r1 * Sin(theta))(cx + r2 * Cos(theta), cy + r2 * Sin(theta))
69.
End If
70.
Next i
71.
72.
[Link] = [Link]
73. End Sub
74. Private Function MinutesToRadians(ByVal num As Single) As Single
75.
MinutesToRadians = (15 - num) * 2 * PI / 60
76. End Function
77.
78.
79. Private Sub Form_Load()
80.
DrawFace
81.
[Link] = 1000
82.
[Link] = 0
83. End Sub
84.
85. Private Sub Picture1_Paint()
86.
Reloj
87. End Sub
88.
89.
90. Private Sub timer1_Timer()
91.
' actualiza
92.
Reloj
93. End Sub
Ejemplo 1
Este es un un cronmetro en vb realizado y enviado por Helmuth Campos:
Contador para cronometrar un tiempo, realizado con un control Timer y la funcin
Format de visual basic
Descargar proyecto
Colocar en un formulario los siguientes controles :
Un Timer llamado Timer1
Un label llamado lblCronometro
Tres CommandButton : ( cmdIniciar, cmdDetener y cmdSalir)
Cdigo fuente en el Formulario
Texto planoImprimir
1. Option Explicit
2.
3. Dim I As Long
'Contador.
4. Dim Tiempo As String 'Tiempo total transcurrido.
5.
6. Private Sub cmdDetener_Click()
7.
[Link] = 0
8. End Sub
9.
10. Private Sub cmdIniciar_Click()
11.
I = 0 'Inicializar el contador.
12.
[Link] = 0
'Detener el cronometro
13.
[Link] = "" 'Limpiar la etiqueta
14.
[Link] = 1
'Iniciar el cronometro
15. End Sub
16.
17. Private Sub cmdSalir_Click()
18.
End
19. End Sub
20.
21. Private Sub Form_Load()
22.
[Link] = "Iniciar"
23.
[Link] = "Detener"
24.
[Link] = "Salir"
25. End Sub
26.
27. Private Sub Form_Resize()
28.
On Error Resume Next
29.
'Centra el formulario completamente
30.
Move ([Link] - Width) \ 29, ([Link] - Height) \ 29
31.
32. End Sub
33.
34. Private Sub Form_Unload(Cancel As Integer)
35.
End
36. End Sub
37.
38. Private Sub Timer1_Timer()
39.
I = I + 1
40.
Tiempo = Format(Int(I / 36000) Mod 24, "00") & ":" & _
41.
Format(Int(I / 600) Mod 60, "00") & ":" & _
42.
Format(Int(I / 10) Mod 60, "00") & ":" & _
43.
Format(I Mod 10, "00")
44.
[Link] = Tiempo
45. End Sub
Ejemplo 2
Otro ejemplo enviado por Ivo Scavuzzo de un cronmetro con cuenta regresiva :
Colocar en el form : Un commandbutton llamado CmdIniciar,
LblTimeSession, otro label lblCRegresiva, y un timer llamado Timer1
Texto planoImprimir
1. Option Explicit
2.
3. Private Sub cmdIniciar_Click()
4. If [Link] = "Iniciar" Then
5.
[Link] = True
6.
[Link] = "Detener"
7. Else
8.
[Link] = False
9.
[Link] = "Iniciar"
10. End If
11. End Sub
un
Label
12.
13. Private Sub Form_Load()
14.
[Link] = "Iniciar"
15.
[Link] = 1000
16. End Sub
17.
18. Private Sub Timer1_Timer()
19.
[Link] = Format(CDate([Link]) + _
20.
CDate("[Link]"), "Hh:mm:ss")
21.
22.
[Link] = Format(CDate([Link]) - _
23.
CDate("[Link]"), "Hh:mm:ss")
24.
If [Link] < CDate("[Link]") Then
25.
[Link] = "[Link]"
26.
End If
27.
28. End Sub
Programa 4 - Algoritmo que indique el tiempo simulado en un reloj digital
Programa 4 - Algoritmo que indique el tiempo simulado en un reloj digital
Este programa cost algo de trabajo realizarlo. A continuacin les muestro 2 versiones que mis
compaeros elaboraron las cuales realizaban diferentes funciones, aunque a simple viste no
pareciera de esta manera.
Planteamiento del problema: Crear un algoritmo que indique el tiempo simulado en un
reloj digital.
Versin 1
Algoritmo / Pseudocdigo:
Diagrama de Flujo
Versin 2
Algoritmo / Pseudocdigo:
Diagrama de Flujo
Versin 3
- Algoritmo / Pseudocdigo:
- Diagrama de Flujo
Prueba de Escritorio
Las Pruebas de Escritorio de las 3 versiones del algoritmo se encuentran en el siguiente link
para mayor comodidad el visualizarlas:
Pruebas de Escritorio de las 3V del Algoritmo
Publicado por Michel Vellve en 22:28
Vellve Montoya Michel /
P.E Reloj Digital V1 /
Secuencia 2NV50
Variables
Pant hor minu segun
alla as tos
dos
1
1
1
1
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
17
17
18
18
19
19
20
20
21
21
22
22
23
23
24
24
25
25
26
26
27
27
28
28
29
29
30
30
Vellve Montoya Michel /
P.E Reloj Digital V2 /
Secuencia 2NV50
Vellve Montoya Michel / P.E
Reloj Digital FUNCIONAL /
Secuencia 2NV50
Variables
Pantalla
min seg
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
0
1
2
3
4
5
6
7
Variables
Pantalla
x y z a
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
2
2
3
3
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
3
3
3
3
3
3
3
3
4
4
4
4
4
4
4
4
4
4
5
5
5
5
5
5
5
5
5
5
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
52
53
54
55
56
57
58
59
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[Link]
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 1 1
[Link]
0 1 1
[Link]
0 1 1
[Link]
0 1 1
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 2
[Link]
0 1 3
Avanzando un poco el
tiempo
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
[Link]
[Link]
[Link]
[Link]
[Link]
0
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
2
2
2
3
7
8
9
0