FoxPro/Visual FoxPro - CALENDARIO EN FORMULARIO

   
Vista:

CALENDARIO EN FORMULARIO

Publicado por Marcelo (2 intervenciones) el 01/11/2011 15:58:00
Buen día. Necesito insertar en un formulario un calendario para elección de un fecha la cual después tengo que grabarla junto a otros datos en una BD. Alguién podría decirme cómo hacerlo. Muchas gracias.
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

CALENDARIO EN FORMULARIO

Publicado por Carlos Cuyé cachosistemas@hotmail.com (75 intervenciones) el 01/11/2011 20:28:34
Registrar en el sistema la librería ActiveX mscomct2.ocx.
Allí está el control que se usará.

RegSvr32 C:\WINDOWS\system32\mscomct2.ocx

==============================================================================

Definir las siguientes constantes:

#DEFINE MonthView_Ole_FontName 'Courier'
#DEFINE MonthView_Ole_FontSize 10
#DEFINE MonthView_Ole_TitleBackColor 8410624
#DEFINE MonthView_Ole_TitleForeColor 16777215
#DEFINE MonthView_Ole_MonthBackColor 8421440
#DEFINE MonthView_Ole_ForeColor 16777215
#DEFINE MonthView_Ole_TrailingForeColor 4227327

=============================================================================


Definir la siguiente clase:

* Para instanciar objetos OLE Control es obligatorio el uso de DEFINE CLASS.
DEFINE CLASS clu_OleMonthView AS OleControl

iCal=1 && nro de instancia
icCal='1'

* Se le asignan los valores de constantes de definición de formato
.Object.MonthBackColor=MonthView_Ole_MonthBackColor
.Object.TitleBackColor=MonthView_Ole_TitleBackColor
.Object.TitleForeColor=MonthView_Ole_TitleForeColor
.Object.TrailingForeColor=MonthView_Ole_TrailingForeColor
.Object.ForeColor=MonthView_Ole_ForeColor

PROCEDURE SelChange
LPARAMETERS startdate, enddate, cancel
* Aquí van propiedades que se deben definir en el formulario, a las cuales se les puede asignar algún valor proveniente del control monthview.
THISFORM.Fecha[THIS.iCal]=TTOD(THIS.SelStart)
THISFORM.Refresh
ENDPROC

PROCEDURE Refresh
IF THISFORM.Fecha[THIS.iCal]<{^1753-01-01}
MESSAGEBOX('El Calendario sólo puede representar meses'+CRLF+;
'entre las fechas 01-01-1753 y 31-12-9999.')
THIS.SelChange
RETURN
ENDI
THIS.Day=1 && Evita errores por fechas inválidas
THIS.Year=YEAR(THISFORM.Fecha[THIS.iCal])
THIS.Month=MONTH(THISFORM.Fecha[THIS.iCal])
THIS.Day=DAY(THISFORM.Fecha[THIS.iCal])
ENDPROC

ENDDEFINE

============================================================================

En el formulario ejecutar:

m.Frm_MonthView=THISFORM

* Nro de instancia. La define el programador. Puede ser un contador de instancias de MonthView.
* Se puede utilizar como sufijo en el nombre de cada nueva instancia del control monthview
m.icCal=LTRI(STR(m.iCal))

m.OleMonthView='Ole_MonthView'+m.icCal
PUBLIC &OleMonthView. && Es obligatorio el uso del comando PUBLIC

m.Frm_MonthView.AddObject(m.OleMonthView, 'clu_OleMonthView', 'MSComCtl2.MonthView.2')
m.&OleMonthView.=m.Frm_MonthView.&OleMonthView.
m.&OleMonthView..iCal=m.iCal && Nro de instancia. La define el programador. Puede ser un contador de instancias.
m.&OleMonthView..icCal=LTRI(STR(m.iCal)) && Se puede utilizar como sufijo en el nombre de las instancias del control monthview
m.&OleMonthView..Font.Name=MonthView_Ole_FontName && Algunas propiedades no se pueden cargar dentro de la definición realizada con DEFINE CLASS
m.&OleMonthView..Font.Size=MonthView_Ole_FontSize
m.&OleMonthView..Top=3
m.&OleMonthView..Width=217 && Debe estar antes de Left
m.&OleMonthView..Left=m.&OleMonthView..Width*(m.iCal-1)+3
m.&OleMonthView..Enabled=True
m.&OleMonthView..Visible=True
m.Frm_MonthView.UltLeft=m.&OleMonthView..Left && Se pueden utilizar para coordinar las posiciones de varias instancias dentro del mismo formulario.
m.Frm_MonthView.UltWidth=m.&OleMonthView..Width
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

CALENDARIO EN FORMULARIO

Publicado por Juan Manuel Cruz juanmcruz@hotmail.com (508 intervenciones) el 02/11/2011 10:53:31
Asegúrate que en tu menú TOOLS - > OPTIONS (Herramientas -> opciones) en la sección CONTROLS tienes en la lista de controles, activado el :

Microsoft Date and Time picker control

Si no lo tienes -cosa rara- descárgalo y regístralo como te sugiere Carlos Cuyé en sus tres primeras líneas de respuesta.

Una vez activado, en tu Diseñador de formularios, en vez de la barra de controles estándar, elige ACTIVEX CONTROLS. Así podrás arrastrar un control DATE TIME PICKER al formulario, de manera visual, y trabajar sus propiedades y comportamiento.

TIP: si al control DTPIcker en tu formulario le haces clic derecho en modo diseño, puedes ir a un item DTPICKER PROPERTIES donde configurar cosas adicionales que la lista estándar de propiedades no te muestra.

El valor de este control se accede mediante _VALUE (con un guión bajo adelante, en vez del VALUE estándar).

Ya es cosa que te pongas a jugar con sus propiedades y vayas viendo como configurarlo a tu gusto.

Saludos.
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