Clarion, Tips
  Derivando el "Control Calendar"  

¿Quieres conoces más acerca de ViewletBuilder?En muchas aplicaciones se requiere llevar el control y seguimiento de fechas, para hacer la interfase del usuario más amigable y versátil, muchos desarrolladores incluyen una ventana de calendario para permitirle al usuario seleccionar fechas y maniobrar entre meses y años.

Con la liberación de la versión 6 de Clarion se introduce el Control template Calendar. Este template es un control Button (botón) que cuando se oprime, despliega una ventana emergente (popup) mostrando un calendario; al seleccionar una fecha del calendario se regresa la Fecha al control Entry que recibe el valor. El Control Template Calendar tiene opciones para controlar el titulo de la ventana, extender las características de despliegue y refrescar las opciones de la ventana.

Pero, ¿que pasa cuando queremos modificar otros aspectos de despliegue de este control? - por ejemplo: tipo de letra, tamaño, color, etc. Aquí te presentamos unos pequeños consejos que te servirán para derivar un método de la Clase Calendar, y modificar la estructura de la ventana para ajustarla a tus necesidades.

Da click aquí para bajar el archivo .app de ejemplo.

1. Empecemos colocando el "Control Calendar" en la ventana, una vez hecho esto nos iremos al dialogo de propiedades, en la pestaña Actions, dar click al botón Calendar Lookup Prompts y especificar en la pestaña General que control recibirá el valor (Fecha) seleccionado por el usuario.

2. Posteriormente, vaya a la pestaña Classes del "Control Calendar", aquí es donde realmente empieza la diversión. Existen dos clases del Calendario: CalendarClass y CalendarSmallClass, y cada una de ellas tiene una interfase diferente. Para probar esto, simplemente cambie la clase por default y sustitúyala según su gusto, a continuación te mostramos las características de cada una de ellas,

La clase por default: CalendarClass (ABC) despliega una interfase estilo WinXP, como se muestra en la sig. Imagen:

Si cambiamos a CalendarSmallClass como la clase base, veremos una interfase (ventana) mas amplia, con un reloj digital y algunas otras opciones para navegar entre fechas

Si eres un desarrollador exigente contigo mismo y deseas brindarle mayor ‘valor’ a tu calendario, puedes utilizar tu propia interfase de Calendario. Para lograr esto debes utilizar como clase base CalendarBaseClass, y ‘llamar’ tu propia ventana (estructura WINDOW) en el método ASK. Vayamos a los hechos…

3. Primero veamos los Embed’s de este control, para esto regresemos a la pestaña Actions, y seleccionemos el boton Embed. En la sección Local Objects, podemos ver que hay tres métodos virtuales (Embeds) disponibles para CalendarBaseClass. Para nuestro objetivo nos enfocaremos en el método Ask:

Para el paso final iniciaremos incluyendo nuestra ventana (definición de nuestra estructura Window), siendo ésta un clon de alguna de las estructuras window que vienen con la librería ABC. En el archivo ABUTILUI.INC (localizado en la carpeta LIBSRC del directorio de instalación de Clarion 6) podemos ver las dos estructuras de ventana calendario para cada una de las clases Calendar (CalendarClass y CalendarSmallClass). Seleccione la estructura que más se acerque a sus necesidades, seleccione todo el bloque de texto y cópielo (ctrl-C).

En la sección Data del método Ask que se mostró arriba, pegue (Ctrl-V) la estructura Window en este punto de inserción de código (Embed). De aquí en adelante, podremos modificar la ventana según nuestras especificaciones:

TIP 1: Después de pegar el código en el Embed, es posible visualizar la ventana con el (Window Formatter), y editarla desde ahí.

Para lograr esto debemos presionar el botón (SOURCE) de la ventana de embeds,

 

 

Localizar el embed que copiamos y teniendo el cursor en el embed, presionar (CTRL.-F).


 

Esto nos llevara al Formateador de Ventanas y ahí podemos modificar la venta a nuestro gusto , los cambios que se hagan en el Formateador de Ventanas, se reflejaran en el código.

 


 

TIP2: Si deseas que en el calendario se muestren los nombre de los meses y de los días en Español, es necesario Modificar los Grupos de Etiquetas declarados para éstas constantes.

Éstas declaraciones de Constantes se encuentran en el archivo, ABUTILUI.INC que se encuentra dentro del fólder LIBSRC, en la carpeta donde está instalado Clarion.

Finalmente, localice el método Ask en el archivo ABUTIL.CLW (misma ubicación que ABUTILUI.INC) ya sea de la clase CalendarClass o CalendarSmallClass (no importa de cual clase sea ya que ambos métodos son idénticos), y copie el siguiente código en el CODE embed de nuestro método Ask derivado:

OPEN(Screen)
SELF.CtrlSun = ?Sun
SELF.CtrlExit = ?Exit
SELF.CtrlToday = ?Today
SELF.CtrlDay1 = ?Day1
SELF.CtrlDay42 = ?Day42
SELF.CtrlPrevMonth = ?PrevMonth
SELF.CtrlNextMonth = ?NextMonth
SELF.CtrlPrevYear = ?PrevYear
SELF.CtrlNextYear = ?NextYear
SELF.CtrlMore7 = ?More7
SELF.CtrlLess7 = ?Less7
SELF.CtrlMore15 = 0
SELF.CtrlLess15 = 0
SELF.CtrlCurrTime = 0
SELF.CtrlMonthYear = ?MonthYear
SELF.CtrlTheDate = 0
SELF.CtrlTitleBG = ?BoxTitleBackground
SELF.CtrlBodyBG = ?BoxBodyBackground
RETURN PARENT.Ask(pTitle,pDate)
Después de esto, lo único que falta es compilar, probar y ajustar lo que se requiera!

NOTA: ASEGURESE de NO renombrar o eliminar variables o controles de la pantalla, si no requiere algún control de la ventana simplemente active la propiedad HIDE de ese control.

Esta interfase permite también fácilmente incluir la ventana de Calendario en la ventana original en lugar de desplegarlo en una ventana emergente… pero eso, es otra historia… que podremos abordar en su momento!

Póngase en contacto con Nosotros.
Gopac, Soluciones Integrales.
Av. Cubilete No. 800-11,
Col. Chapalita, Zapopan, Jal. CP. 45040.
Tel: (0133) 3122 1947 Fax: (0133) 3121 4989.
ventas@gopac.com.mx
www.gopac.com.mx
Si consideras que este correo es interesante o importante para otra persona te invitamos a que se lo envíes. Gracias.