FoxPro/Visual FoxPro - Como crear un reloj analogico

 
Vista:
sin imagen de perfil

Como crear un reloj analogico

Publicado por Ernesto Hernandez (4623 intervenciones) el 19/07/2006 01:12:49
Extraido de quien sabe donde ;-) (en serio que no lo recuerdo)

Espero les sirva

PUBLIC goMiForm
goMiForm = CREATEOBJECT("MiForm")
goMiForm.SHOW(1)
RETURN

DEFINE CLASS MiForm AS FORM
HEIGHT = 240
WIDTH = 240
AUTOCENTER = .T.
CAPTION = "Reloj Analógico E.H."
NAME = "frmRelojAnalogico"
ADD OBJECT RelojAnalogico1 AS RelojanAlogico WITH TOP = 20, ;
LEFT = 20, ;
NAME = "RelojAnalogo1"
ENDDEFINE


DEFINE CLASS relojanalogico AS CONTAINER
WIDTH = 200
HEIGHT = 200
BACKSTYLE = 0
BORDERWIDTH = 0
NAME = "RelojAnalogico"
ADD OBJECT shpEsfera AS SHAPE WITH ;
TOP = 0, ;
LEFT = 0, ;
HEIGHT = 200, ;
WIDTH = 200, ;
CURVATURE = 99, ;
BACKCOLOR = RGB(255,255,255), ;
NAME = "shpEsfera"
ADD OBJECT shpAgujas AS SHAPE WITH ;
TOP = 0, ;
LEFT = 0, ;
HEIGHT = 200, ;
WIDTH = 200, ;
BORDERWIDTH = 1, ;
BACKCOLOR = RGB(200,255,200), ;
POLYPOINTS = "This.aPoly", ;
NAME = "shpAgujas"

ADD OBJECT tmrTimer AS TIMER WITH ;
INTERVAL = 1000, ;
NAME = "tmrTimer"
PROCEDURE Hora

LOCAL ln, lnAng, lnCos, lnSen, lnCoI, lnCoD, lnSeI, lnSeD
ln = SECONDS()
*--- Posicion aguja segundos
lnAng = INT(ln % 60) * 6
lnCos = COS(DTOR(lnAng -90))
lnSen = SIN(DTOR(lnAng -90))
THIS.shpAgujas.aPoly(10,1) = 48 * lnCos + 50
THIS.shpAgujas.aPoly(10,2) = 48 * lnSen + 50
*--- Posicion aguja minutos
lnAng = INT((ln / 60) % 60) * 6
lnCos = COS(DTOR(lnAng-90))
lnSen = SIN(DTOR(lnAng-90))
lnCoI = COS(DTOR(lnAng-90-7))
lnSeI = SIN(DTOR(lnAng-90-7))
lnCoD = COS(DTOR(lnAng-90+7))
lnSeD = SIN(DTOR(lnAng-90+7))
THIS.shpAgujas.aPoly(2,1) = 30 * lnCoI + 50
THIS.shpAgujas.aPoly(2,2) = 30 * lnSeI + 50
THIS.shpAgujas.aPoly(3,1) = 45 * lnCos + 50
THIS.shpAgujas.aPoly(3,2) = 45 * lnSen + 50
THIS.shpAgujas.aPoly(4,1) = 30 * lnCoD + 50
THIS.shpAgujas.aPoly(4,2) = 30 * lnSeD + 50
*--- Posicion aguja horas
lnAng = ((ln / 3600) % 12)* 30
lnCos = COS(DTOR(lnAng -90))
lnSen = SIN(DTOR(lnAng -90))
lnCoI = COS(DTOR(lnAng-90-10))
lnSeI = SIN(DTOR(lnAng-90-10))
lnCoD = COS(DTOR(lnAng-90+10))
lnSeD = SIN(DTOR(lnAng-90+10))
THIS.shpAgujas.aPoly(6,1) = 20 * lnCoI + 50
THIS.shpAgujas.aPoly(6,2) = 20 * lnSeI + 50
THIS.shpAgujas.aPoly(7,1) = 35 * lnCos + 50
THIS.shpAgujas.aPoly(7,2) = 35 * lnSen + 50
THIS.shpAgujas.aPoly(8,1) = 20 * lnCoD + 50
THIS.shpAgujas.aPoly(8,2) = 20 * lnSeD + 50
THIS.shpAgujas.REFRESH
ENDPROC

PROCEDURE INIT
THIS.Hora
ENDPROC

PROCEDURE shpEsfera.INIT
THIS.HEIGHT = THIS.PARENT.HEIGHT
THIS.WIDTH = THIS.PARENT.WIDTH
ENDPROC

PROCEDURE shpAgujas.INIT
THIS.HEIGHT = THIS.PARENT.HEIGHT
THIS.WIDTH = THIS.PARENT.WIDTH
THIS.ADDPROPERTY("aPoly[10,2]")
FOR lnI = 1 TO 10
STORE 50 TO THIS.aPoly[lnI,1], THIS.aPoly[lnI,2]
ENDFOR
ENDPROC

PROCEDURE tmrTimer.TIMER
THIS.PARENT.Hora
ENDPROC

ENDDEFINE


Suerte
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como crear un reloj analogico

Publicado por Plinio (7841 intervenciones) el 19/07/2006 04:22:06
http://www.portalfox.com/modules.php?op=modload&name=News&file=article&sid=1887
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Como crear un reloj analogico

Publicado por Ernesto Hernandez (4623 intervenciones) el 19/07/2006 04:41:04
efectivamente plinio de nuestro gran amigo y compañero Luis Maria Guyan de Tucuman, Argentina que le estamos agradecidos por toda la talacha que estan haciendo para mantener en linea el portal hermano www.portalfox.com el portal del pueblo pero estaba confundido pensando que era de otro gran compañero y amigo Erin deDoop
Excelente por tener documentado todo lo que bajas de la web plinio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar