Acerca de los controles de calendario de mes
Un control de calendario mensual implementa una interfaz de usuario similar al calendario. Esto proporciona al usuario un método muy intuitivo y reconocible de escribir o seleccionar una fecha. El control también proporciona a la aplicación los medios para obtener y establecer la información de fecha en el control mediante tipos de datos existentes.
Características de control de calendario de mes
En la captura de pantalla siguiente se muestra un control de calendario de mes que se ha dimensionado para mostrar dos meses.
Nota
La apariencia y el comportamiento del control de calendario del mes difieren ligeramente en versiones diferentes de la biblioteca en tiempo de ejecución. Este tema se centra en el control tal como aparece en Windows Vista con la versión 6 de Comctl32.dll.
El control de la ilustración tiene las siguientes características opcionales.
- La fecha actual se muestra en una línea independiente en la parte inferior del control. Éste es el estilo predeterminado.
- El "círculo de hoy" (en realidad un rectángulo en esta versión) aparece alrededor del día actual y junto a la línea "Hoy" como una indicación visual. Éste es el estilo predeterminado.
- Los números de semana se muestran a la izquierda de cada fila de días. Este estilo debe especificarse.
- Algunas fechas se muestran en negrita, según el estado de día establecido por la aplicación. Por ejemplo, las fechas que tienen reuniones programadas pueden mostrarse en negrita. Este estilo debe especificarse.
Nota
Windows no admite fechas anteriores a la 1601. Consulte FILETIME para obtener más información.
El control de calendario mensual se basa en el calendario gregoriano, que se introdujo en 1753. No calculará las fechas que sean coherentes con el calendario juliano que estaba en uso antes de 1753.
Selección de un día
De forma predeterminada, cuando un usuario hace clic en los botones de flecha de la parte superior izquierda o superior derecha del control de calendario del mes, el control actualiza su presentación para mostrar el mes anterior o siguiente. El usuario también puede realizar la misma acción haciendo clic en los meses parciales mostrados antes del primer mes y después del último mes.
Los siguientes comandos de teclado también se pueden usar para mover la selección. El calendario siempre se desplaza según sea necesario para mostrar el día seleccionado. (Los códigos de clave virtual se muestran en la tabla).
Get-Help | Descripción |
---|---|
Flecha izquierda (VK_LEFT) | Seleccione el día anterior. |
Flecha derecha (VK_RIGHT) | Seleccione el día siguiente. |
Flecha arriba (VK_UP) | Seleccione el mismo día de la semana anterior. |
Flecha abajo (VK_DOWN) | Seleccione el mismo día en la semana siguiente. |
PÁGINA ARRIBA (VK_PRIOR) | Seleccione el mismo día en el mes anterior. (Si ese mes no tiene el día, se selecciona el día más cercano; por ejemplo, la selección pasa del 31 de marzo al 28 de febrero o 29). |
PÁGINA ABAJO (VK_NEXT) | Seleccione el mismo día en el mes siguiente. |
INICIO (VK_HOME) | Seleccione el primer día del mes actual. |
END (VK_END) | Seleccione el último día del mes actual. |
CTRL + INICIO | Desplácese un mes hacia atrás y seleccione un día en la columna situada más a la izquierda. |
CTRL + END | Desplácese un mes hacia delante y seleccione un día en la columna situada más a la derecha. |
CTRL + SUBIR PÁGINA | Seleccione el mismo día en un mes anterior. El número de meses por los que se mueve la selección es el número de meses que se muestran en el control. Por ejemplo, si se muestran dos meses, la selección se movería del 6 de junio al 6 de mayo. |
CTRL + PÁGINA ABAJO | Seleccione el mismo día en un mes anterior. El número de meses por los que se mueve la selección es el número de meses que se muestran en el control. Por ejemplo, si se muestran dos meses, la selección se movería del 6 de junio al 6 de agosto. |
Si un control de calendario de mes no usa el estilo MCS_NOTODAY , el usuario puede volver al día actual haciendo clic en el texto "Hoy" en la parte inferior del control. Si el día actual no está visible, el control actualiza su presentación para mostrarlo.
Una aplicación puede cambiar el número de meses por los que el control actualiza su presentación mediante el mensaje MCM_SETMONTHDELTA o la macro correspondiente, MonthCal_SetMonthDelta. Sin embargo, las claves PAGE UP y PAGE DOWN cambian el mes seleccionado por uno, independientemente del número de meses mostrados o el valor establecido por MCM_SETMONTHDELTA.
Selección de un mes que no sea desagreciente
Cuando un usuario hace clic en el nombre de un mes mostrado, se muestran todos los meses del año (en versiones anteriores, se trata de un menú emergente). El usuario puede seleccionar un mes en la lista. Si la selección del usuario no está visible, el control de calendario del mes desplaza su presentación para mostrar el mes elegido. En la siguiente captura de pantalla, un control de calendario de mes muestra los meses de dos años adyacentes.
Selección de un año diferente
Si el usuario hace clic en el año, aparece un grupo de años y el usuario puede seleccionar uno diferente, como se muestra en la captura de pantalla siguiente.
Localización
El control mes-calendario obtiene su formato y todas las cadenas de LOCALE_USER_DEFAULT.
Horas en el control calendario de mes
El control de calendario del mes no muestra la hora. Sin embargo, la estructura SYSTEMTIME que se usa para establecer y recuperar la fecha seleccionada o la fecha de hoy contiene campos de hora. Cuando se establece una fecha mediante programación, el control copia los campos de hora tal y como están o los valida primero y, después, si no son válidos, almacena las horas predeterminadas actuales. A continuación se muestra una lista de los mensajes que establecen una fecha y una descripción de cómo se tratan los campos de hora.
Message | Descripción |
---|---|
MCM_SETCURSEL | El control copia los campos de hora tal y como están, sin validación ni modificación. |
MCM_SETRANGE | Se validan los campos de hora de las estructuras pasadas. Si son válidos, los campos de hora se copian sin modificaciones. Si no son válidos, el control copia los campos de hora de los datos actuales. |
MCM_SETSELRANGE | Se validan los campos de hora de las estructuras pasadas. Si son válidos, los campos de hora se copian sin modificaciones. Si no son válidos, el control conserva los campos de hora de los intervalos de selección actuales. |
MCM_SETTODAY | El control copia los campos de hora tal y como están, sin validación ni modificación. |
Cuando se recupera una fecha del control, los campos de hora se copiarán de las horas almacenadas sin modificaciones. El control de los campos de tiempo por parte del control se proporciona como comodidad para el programador. El control no examina ni modifica los campos de hora como resultado de ninguna operación distinta de las enumeradas anteriormente.