Hola invitado         02 Sep, 2010 - 04:47
Menú principal
 
Ads
 
Patrocinadores
 
Anuncios
 
© 2009 PortalFox
Reloj Analógico con VFP 9.0 lecturas 5823
 Enviado por Luis María Guayán en Martes, 09 Agosto, 2005
Clases Una clase que que contiene un objeto Shape con su nueva propiedad PolyPoints en Visual FoxPro 9.0 que nos permite dibujar las agujas de un reloj analógico con formas poligonales.

Reloj Analógico con VFP 9.0

Luis María Guayán Por Luis María Guayán, Tucumán, Argentina



El código (para VFP 9.0) de la clase RelojAnalogico contenida en un formulario es el siguiente:

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

DEFINE CLASS MiForm AS FORM
HEIGHT = 240
WIDTH = 240
AUTOCENTER = .T.
CAPTION = "Reloj Analógico"
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




Pueden descargar el proyecto con el formulario y la librería de clases visuales en el siguiente enlace:

RelojAnalogico.zip (4,41 KB)


 Versión imprimible  
Reloj Analógico con VFP 9.0 | Entrar/Crear una cuenta | 0 Comentarios
Los comentarios son propiedad de sus respectivos autores.
No somos responsables de su contenido.



Todas las marcas y los logos utilizados en este sitio son propiedad de sus respectivos dueños.
Los artículos, noticias y comentarios son propiedad y responsabilidad de sus respectivos autores.
Copyright © 2000-2010 PortalFox. Todos los derechos reservados.