Compartir a través de


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.

captura de pantalla de un cuadro de diálogo con un control de calendario de mes que muestra dos meses, en paralelo

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.

captura de pantalla de un cuadro de diálogo con un control de calendario de mes que muestra todos los meses de 2007 y 2008

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.

captura de pantalla de un control de calendario de mes que muestra todos los años de 1999 a 2020

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.