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
sin imagen de perfil

CALENDARIO EN FORMULARIO

Publicado por Carlos Cuyé (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:

1
2
3
4
5
6
7
#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:

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
* 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:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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
sin imagen de perfil

CALENDARIO EN FORMULARIO

Publicado por Juan Manuel Cruz (512 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