Informazioni sui controlli selezione data e ora

Un controllo selezione data e ora (DTP) fornisce un'interfaccia semplice e intuitiva tramite cui scambiare informazioni di data e ora con un utente. Ad esempio, con un controllo DTP è possibile chiedere all'utente di immettere una data e quindi recuperare facilmente la selezione.

Vengono trattati i seguenti argomenti:

Nota

Windows non supporta le date precedenti alla versione 1601. Per informazioni dettagliate, vedere la struttura FILETIME .

Il controllo è basato sul calendario gregoriano, introdotto nel 1753. Non calcolerà le date coerenti con il calendario julian.

Interfaccia utente selezione data e ora

L'area client di un controllo selezione data e ora (DTP) visualizza le informazioni di data o ora oppure entrambe e funge da interfaccia tramite cui gli utenti modificano le informazioni. La data può essere selezionata da un calendario o utilizzando un controllo up-down; l'ora può essere modificata digitando i campi definiti dalle stringhe di formato del controllo. Facoltativamente, il controllo visualizza una casella di controllo. Quando viene controllato, il valore nel controllo può essere recuperato; in caso contrario, il controllo viene considerato non inizializzato.

La figura seguente mostra una finestra che contiene tre controlli selezione data. Il primo controllo selezione data è stato creato con lo stile DTS_SHOWNONE, il secondo con lo stile DTS_UPDOWN e il terzo senza stili speciali. Nel terzo controllo l'utente ha fatto clic sulla freccia giù per visualizzare il calendario.

screen shot of a window that demonstrates three styles of date-picker controls

La figura seguente mostra una finestra con tre controlli che contengono l'ora.

Il primo controllo è stato creato con lo stile DTS_TIMEFORMAT e mostra l'ora nell'ora predefinita, costituita da quattro campi. L'utente può digitare un valore valido in uno di questi campi oppure selezionare il campo e modificare il valore usando il controllo verso l'alto o i tasti di direzione.

Il secondo controllo mostra un set di formati personalizzato usando DateTime_SetFormat. Come per il primo controllo, l'utente può modificare i campi dell'ora digitando o usando i tasti di direzione. Il giorno della settimana può essere modificato selezionando una data dal calendario che si apre quando l'utente fa clic sulla freccia giù.

Il terzo controllo mostra come aggiungere testo arbitrario al controllo. L'utente può selezionare un'ora (da 1 a 24) digitando, usando i tasti di direzione o usando il controllo verso l'alto.

screen shot of a window that shows three controls that contain the time

Il controllo DTP aggiorna automaticamente le informazioni interne in base all'input dell'utente. Il controllo riconosce quanto segue come input valido.

Categoria di input Descrizione
Tasti di direzione Il controllo accetta i tasti di direzione per spostarsi nei campi nel controllo e modificare i valori. L'utente può premere i tasti o per spostarsi attraverso il controllo Se l'utente tenta di spostarsi oltre l'ultimo campo in una determinata direzione, lo stato attivo della tastiera "esegue il wrapping" sul campo sul lato opposto del controllo. Le chiavi e modificano i valori nel campo corrente in modo incrementale.
Fine e home Il controllo accetta i VK_END e VK_HOME chiavi virtuali per modificare rispettivamente il valore all'interno del campo corrente impostandone i limiti superiori e inferiori.
Tasti funzione Il tasto attiva la modalità di modifica. Il tasto fa sì che il controllo visualizzi un controllo del calendario mensile a discesa (premendo questa operazione).
Numeri Il controllo accetta input numerico in segmenti a due caratteri. Se il valore immesso dall'utente non è valido (ad esempio impostando il mese su 14), il controllo lo rifiuta e reimposta la visualizzazione sul valore precedente.
Plus e Minus Il controllo accetta i tasti virtuali VK_ADD e VK_SUBTRACT dal tastierino numerico per incrementare e decrementare il valore nel campo corrente.

 

I controlli DTP che non usano lo stile DTS_UPDOWN visualizzano un pulsante freccia. Se l'utente fa clic su questo pulsante, viene visualizzato un controllo del calendario mensile. L'utente può selezionare una data specifica facendo clic su un'area del calendario.

Stili e formati di controllo selezione data e ora

I controlli selezione data e ora (DTP) hanno diversi stili di controllo selezione data e ora che determinano l'aspetto e il comportamento di un controllo. Specificare lo stile durante la creazione del controllo con il parametro dwStyle di CreateWindowEx. Per recuperare o modificare lo stile della finestra dopo aver creato il controllo, usare GetWindowLong e SetWindowLong.

Formati predefiniti

Sono disponibili tre formati predefiniti per la visualizzazione della data e una per la visualizzazione dell'ora. Impostare questi formati scegliendo uno degli stili di finestra seguenti.

Formato Descrizione
DTS_LONGDATEFORMAT Lo schermo sarà simile al seguente: "Venerdì 19 aprile 1996".
DTS_SHORTDATEFORMAT Lo schermo sarà simile al seguente: "4/19/96".
DTS_SHORTDATECENTURYFORMAT Versione 5.80. Lo schermo sarà simile al seguente: "4/19/1996".
DTS_TIMEFORMAT Lo schermo sarà simile al seguente: "5:31:42 PM".

 

Formati personalizzati

Un controllo DTP si basa su una stringa di formato per determinare la modalità di visualizzazione dei campi di informazioni. Se i formati predefiniti non sono sufficienti, è possibile creare un formato personalizzato definendo una stringa di formato personalizzata. I formati personalizzati offrono maggiore flessibilità per un'applicazione. Consentono di specificare l'ordine in cui il controllo visualizzerà i campi delle informazioni. È possibile includere il testo del corpo e i campi di callback per richiedere informazioni all'utente. Dopo aver creato la stringa, assegnarla al controllo DTP con un messaggio DTM_edizione Standard TFORMAT.

Stringhe di formato

Una stringa di formato DTP è costituita da una serie di elementi che rappresentano una determinata parte di informazioni e ne definiscono il formato di visualizzazione. Gli elementi verranno visualizzati nell'ordine in cui vengono visualizzati nella stringa di formato.

Gli elementi di formato data e ora verranno sostituiti dalla data e dall'ora effettivi. Vengono definiti dai gruppi di caratteri seguenti.

Elemento Descrizione
"d" Giorno di una o due cifre.
"dd" Giorno a due cifre. I valori giorno a una cifra singola sono preceduti da uno zero.
"ddd" Abbreviazione della settimana a tre caratteri.
"dddd" Nome completo del giorno della settimana.
"h" Ora a una o due cifre in formato 12 ore.
"hh" Ora a due cifre in formato 12 ore. I valori a cifra singola sono preceduti da uno zero.
"H" Ora a una o due cifre in formato 24 ore.
"HH" Ora a due cifre in formato 24 ore. I valori a cifra singola sono preceduti da uno zero.
"m" Minuto di una o due cifre.
"mm" Minuto a due cifre. I valori a cifra singola sono preceduti da uno zero.
"M" Numero di mese uno o due cifre.
"MM" Numero mese a due cifre. I valori a cifra singola sono preceduti da uno zero.
"MMM" Abbreviazione del mese a tre caratteri.
"MMMM" Nome completo del mese.
"t" L'abbreviazione AM/PM di una lettera( ovvero AM viene visualizzata come "A").
"tt" L'abbreviazione AM/PM di due lettere( ovvero AM viene visualizzata come "AM").
"yy" Le ultime due cifre dell'anno (ovvero il 1996 verrebbe visualizzato come "96").
"yyyy" L'anno completo (cioè, il 1996 verrebbe visualizzato come "1996").

 

Per rendere le informazioni più leggibili, è possibile aggiungere testo del corpo alla stringa di formato racchiudendolo tra virgolette singole. Gli spazi e i segni di punteggiatura non devono essere racchiusi tra virgolette.

Nota

I caratteri non formattati non delimitati da virgolette singole genereranno una visualizzazione imprevedibile dal controllo DTP.

Ad esempio, per visualizzare la data corrente con il formato "'Today is: 04:22:31 Tuesday Mar 23, 1996", la stringa di formato è "'Today is: 'hh':'m':'s dddd MMM ddd', 'yyyy". Per includere una virgoletta singola nel testo del corpo, usare due virgolette singole consecutive. Ad esempio, "'Don't forget' MMM dd',' aaaa" produce output simile a: Non dimenticare mar 23, 1996. Non è necessario usare virgolette con la virgola, quindi "'Don't forget' MMM dd, yyyyy" è anche valido e produce lo stesso output.

Campi di callback

Oltre al testo del corpo e alle stringhe di formato standard, è anche possibile definire alcune parti della visualizzazione come campi callback. Questi campi possono essere usati per eseguire query sull'utente per ottenere informazioni. Per dichiarare un campo di callback, includere uno o più caratteri "X" (codice ASCII 88) in qualsiasi punto della stringa di formato. È possibile creare campi di callback con un'identità univoca ripetendo il carattere "X". Di conseguenza, la stringa di formato "XX dddd MMM ddd", 'yyy XXX" contiene due campi di callback univoci, "XX" e "XXX". Analogamente ad altri campi di controllo DTP, i campi di callback vengono visualizzati in ordine da sinistra a destra in base alla posizione nella stringa di formato.

Quando il controllo DTP analizza la stringa di formato e rileva un campo di callback, invia DTN_FORMAT e DTN_FORMATQUERY codici di notifica. L'elemento stringa di formato corrispondente al campo di callback è incluso nelle notifiche per consentire all'applicazione ricevente di determinare quale campo di callback viene sottoposto a query. Il proprietario del controllo deve rispondere a queste notifiche per assicurarsi che le informazioni personalizzate siano visualizzate correttamente.

Messaggi di notifica del controllo selezione data e ora

Un controllo selezione data e ora (DTP) invia codici di notifica quando riceve l'input o i processi dell'utente e reagisce ai campi di callback. L'elemento padre del controllo riceve questi codici di notifica sotto forma di WM_NOTIFY messaggi.

I codici di notifica seguenti vengono usati con i controlli DTP.

Codice di notifica Descrizione
DTN_CLOedizione Standard UP Indica che il calendario del mese a discesa sta per essere rimosso.
DTN_DATETIMECHANGE Segnala una modifica all'interno del controllo DTP.
DTN_DROPDOWN Indica che il calendario del mese a discesa sta per essere visualizzato.
DTN_FORMAT Richiede la visualizzazione di testo in una parte della stringa di formato descritta come campo di callback.
DTN_FORMATQUERY Richiede informazioni sulle dimensioni massime consentite del testo da visualizzare in un campo di callback.
DTN_Uedizione Standard RSTRING Segnala la fine dell'operazione di modifica di un utente all'interno del controllo . Questa notifica viene inviata solo dai controlli DTP che usano lo stile DTS_APPCANPARedizione Standard.
DTN_WMKEYDOWN Segnala che l'utente ha premuto un tasto in un campo di callback del controllo DTP.

 

Informazioni di riferimento sul controllo Selezione data e ora