Compartir a través de


Acerca de los controles selector de fecha y hora

Un control selector de fecha y hora (DTP) proporciona una interfaz sencilla e intuitiva a través de la cual intercambiar información de fecha y hora con un usuario. Por ejemplo, con un control DTP puede pedir al usuario que escriba una fecha y, a continuación, recupere fácilmente la selección.

Se tratan los temas siguientes:

Nota

Windows no admite fechas anteriores a la 1601. Consulte la estructura FILETIME para obtener más información.

El control se basa en el calendario gregoriano, que se introdujo en 1753. No calculará las fechas que sean coherentes con el calendario juliano.

Interfaz de usuario del selector de fecha y hora

El área cliente de un control selector de fecha y hora (DTP) muestra información de fecha u hora, o ambos, y actúa como la interfaz a través de la cual los usuarios modifican la información. La fecha se puede seleccionar desde un calendario o mediante un control de arriba abajo; La hora se puede cambiar escribiendo en campos definidos por las cadenas de formato del control. Opcionalmente, el control muestra una casilla. Cuando se comprueba, se puede recuperar el valor del control; de lo contrario, el control se considera no inicializado.

En la ilustración siguiente se muestra una ventana que contiene tres controles de selector de fecha. El primer control de selector de fecha se creó con el estilo DTS_SHOWNONE , el segundo con el estilo DTS_UPDOWN y el tercero sin estilos especiales. En el tercer control, el usuario ha realizado clic en la flecha hacia abajo para mostrar el calendario.

captura de pantalla de una ventana que muestra tres estilos de controles de selector de fecha

En la ilustración siguiente se muestran ventanas con tres controles que contienen la hora.

El primer control se ha creado con el estilo DTS_TIMEFORMAT y muestra la hora en la hora predeterminada, que consta de cuatro campos. El usuario puede escribir un valor válido en cualquiera de estos campos, o seleccionar el campo y cambiar el valor mediante el control arriba o las teclas de dirección.

El segundo control muestra un conjunto de formato personalizado mediante DateTime_SetFormat. Al igual que con el primer control, el usuario puede cambiar los campos de hora escribiendo o usando teclas de dirección. El día de la semana se puede cambiar seleccionando una fecha del calendario que se abre cuando el usuario hace clic en la flecha hacia abajo.

El tercer control muestra cómo se puede agregar texto arbitrario al control. El usuario puede seleccionar una hora (de 1 a 24) escribiendo, usando las teclas de dirección o mediante el control arriba.

captura de pantalla de una ventana que muestra tres controles que contienen la hora

El control DTP actualiza automáticamente la información interna en función de la entrada del usuario. El control reconoce lo siguiente como entrada válida.

Categoría de entrada Descripción
Teclas de dirección El control acepta teclas de dirección para navegar por los campos del control y cambiar los valores. El usuario puede presionar las teclas o para desplazarse por el control Si el usuario intenta moverse más allá del último campo en una dirección determinada, el foco del teclado "se ajusta" al campo en el lado opuesto del control. Las claves y cambian los valores del campo actual de forma incremental.
End and Home El control acepta el VK_END y VK_HOME claves virtuales para cambiar el valor dentro del campo actual a sus límites superior e inferior, respectivamente.
Claves de función La clave activa el modo de edición. La tecla hace que el control muestre un control de calendario mensual desplegable (al presionar esto también).
Números El control acepta entradas numéricas en segmentos de dos caracteres. Si el valor especificado por el usuario no es válido (como establecer el mes en 14), el control lo rechaza y restablece la presentación al valor anterior.
Más y menos El control acepta el VK_ADD y VK_SUBTRACT claves virtuales del teclado numérico para incrementar y disminuir el valor en el campo actual.

 

Los controles DTP que no usan el estilo DTS_UPDOWN muestran un botón de flecha. Si el usuario hace clic en este botón, se reduce un control de calendario de mes. El usuario puede seleccionar una fecha específica haciendo clic en un área del calendario.

Estilos y formatos de control selector de fecha y hora

Los controles selectores de fecha y hora (DTP) tienen varios estilos de control selector de fecha y hora que determinan la apariencia y el comportamiento de un control. Especifique el estilo al crear el control con el parámetro dwStyle de CreateWindowEx. Para recuperar o cambiar el estilo de ventana después de crear el control, use GetWindowLong y SetWindowLong.

Formatos preestablecidos

Hay tres formatos preestablecidos disponibles para mostrar la fecha y otra para mostrar la hora. Para establecer estos formatos, elija uno de los siguientes estilos de ventana.

Formato Descripción
DTS_LONGDATEFORMAT La pantalla tendrá el siguiente aspecto: "Viernes, 19 de abril de 1996".
DTS_SHORTDATEFORMAT La pantalla tendrá el siguiente aspecto: "4/19/96".
DTS_SHORTDATECENTURYFORMAT Versión 5.80. La pantalla tendrá el siguiente aspecto: "19/4/1996".
DTS_TIMEFORMAT La pantalla tendrá el siguiente aspecto: "5:31:42 PM".

 

Formatos personalizados

Un control DTP se basa en una cadena de formato para determinar cómo mostrará campos de información. Si los formatos preestablecidos no son suficientes, puede crear un formato personalizado definiendo su propia cadena de formato. Los formatos personalizados proporcionan una mayor flexibilidad para una aplicación. Permiten especificar el orden en el que el control mostrará campos de información. Puede incluir texto del cuerpo, así como campos de devolución de llamada para solicitar información del usuario. Una vez creada la cadena, se le asigna al control DTP con un mensaje de DTM_SETFORMAT .

Cadenas de formato

Una cadena de formato DTP consta de una serie de elementos que representan un fragmento de información determinado y definen su formato de presentación. Los elementos se mostrarán en el orden en que aparecen en la cadena de formato.

Los elementos de formato de fecha y hora se reemplazarán por la fecha y hora reales. Se definen mediante los siguientes grupos de caracteres.

Elemento Descripción
"d" El día de uno o dos dígitos.
"dd" Día de dos dígitos. Los valores de día de un solo dígito van precedidos de un cero.
"ddd" Abreviatura del día de la semana de tres caracteres.
"dddd" Nombre completo del día de la semana.
"h" Hora de uno o dos dígitos en formato de 12 horas.
"hh" Hora de dos dígitos en formato de 12 horas. Los valores de un solo dígito van precedidos de un cero.
"H" Hora de uno o dos dígitos en formato de 24 horas.
"HH" Hora de dos dígitos en formato de 24 horas. Los valores de un solo dígito van precedidos de un cero.
"m" Minuto de uno o dos dígitos.
"mm" Minuto de dos dígitos. Los valores de un solo dígito van precedidos de un cero.
"M" Número de mes de uno o dos dígitos.
"MM" Número de mes de dos dígitos. Los valores de un solo dígito van precedidos de un cero.
"MMM" Abreviatura de mes de tres caracteres.
"MMMM" Nombre completo del mes.
"t" La abreviatura am/PM de una letra (es decir, AM se muestra como "A").
"tt" La abreviatura am/PM de dos letras (es decir, AM se muestra como "AM").
"yy" Los dos últimos dígitos del año (es decir, 1996 se mostrarán como "96").
"yyyy" El año completo (es decir, 1996 se mostrará como "1996").

 

Para que la información sea más legible, puede agregar texto del cuerpo a la cadena de formato si lo incluye entre comillas simples. No es necesario entrecomillar espacios ni signos de puntuación.

Nota

Los caracteres noformados que no están delimitados por comillas simples darán lugar a una visualización imprevisible por parte del control DTP.

Por ejemplo, para mostrar la fecha actual con el formato "'Today is: 04:22:31 Tuesday Mar 23, 1996", la cadena de formato es "'Today is: 'hh':'m':'s dddd MMM dd', 'aaaa". Para incluir una comilla simple en el texto del cuerpo, use dos comillas simples consecutivas. Por ejemplo, "'Don't forget' MMM dd',' aaaa" genera una salida similar a: Do not forget Mar 23, 1996. No es necesario usar comillas con la coma, por lo que "'Don't forget' MMM dd, aaaa" también es válido y genera la misma salida.

Campos de devolución de llamada

Además de las cadenas de formato estándar y el texto del cuerpo, también puede definir determinadas partes de la pantalla como campos de devolución de llamada. Estos campos se pueden usar para consultar al usuario para obtener información. Para declarar un campo de devolución de llamada, incluya uno o varios caracteres "X" (código ASCII 88) en cualquier parte de la cadena de formato. Puede crear campos de devolución de llamada que tengan una identidad única repitiendo el carácter "X". Por lo tanto, la cadena de formato "XX dddd MMM dd", "aaaa XXX" contiene dos campos de devolución de llamada únicos, "XX" y "XXX". Al igual que otros campos de control DTP, los campos de devolución de llamada se muestran en orden de izquierda a derecha en función de su ubicación en la cadena de formato.

Cuando el control DTP analiza la cadena de formato y encuentra un campo de devolución de llamada, envía DTN_FORMAT y DTN_FORMATQUERY códigos de notificación. El elemento de cadena de formato correspondiente al campo de devolución de llamada se incluye con las notificaciones para permitir que la aplicación receptora determine qué campo de devolución de llamada se está consultando. El propietario del control debe responder a estas notificaciones para asegurarse de que la información personalizada se muestra correctamente.

Mensajes de notificación de control de selector de fecha y hora

Un control selector de fecha y hora (DTP) envía códigos de notificación cuando recibe la entrada o los procesos del usuario y reacciona a los campos de devolución de llamada. El elemento primario del control recibe estos códigos de notificación en forma de WM_NOTIFY mensajes.

Los siguientes códigos de notificación se usan con controles DTP.

Código de notificación Descripción
DTN_CLOSEUP Indica que el calendario del mes desplegable está a punto de quitarse.
DTN_DATETIMECHANGE Indica un cambio dentro del control DTP.
DTN_DROPDOWN Indica que el calendario del mes desplegable está a punto de mostrarse.
DTN_FORMAT Solicita texto que se muestre en una parte de la cadena de formato descrita como un campo de devolución de llamada.
DTN_FORMATQUERY Solicita información sobre el tamaño máximo permitido del texto que se mostrará en un campo de devolución de llamada.
DTN_USERSTRING Indica al final de la operación de edición de un usuario dentro del control . Esta notificación solo se envía mediante controles DTP que usan el estilo DTS_APPCANPARSE .
DTN_WMKEYDOWN Indica que el usuario ha presionado una tecla en un campo de devolución de llamada del control DTP.

 

Referencia de control selector de fecha y hora