Condividi tramite


Informazioni sui controlli selezione data e ora

Un controllo selezione data e ora (DTP) fornisce un'interfaccia semplice e intuitiva attraverso 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 illustrati gli argomenti seguenti:

Nota

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

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 alcun stile speciale. Nel terzo controllo l'utente ha fatto clic sulla freccia giù per visualizzare il calendario.

screenshot di una finestra che illustra tre stili di controlli per la selezione della data

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.

schermata di una finestra che mostra tre controlli che contengono l'ora

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 freccia Il controllo accetta i tasti di direzione per spostarsi nei campi nel controllo e modificare i valori. L'utente può premere i tasti freccia per spostarsi attraverso il controllo e, se tenta di spostarsi oltre l'ultimo campo in una determinata direzione, lo stato attivo della tastiera ritorna al campo sul lato opposto del controllo. Le chiavi e modificano i valori nel campo corrente in modo incrementale.
Fine e Home Il controllo accetta le chiavi virtuali VK_END e VK_HOME per modificare il valore all'interno del campo corrente, rispettivamente al suo limite superiore o inferiore.
Tasti funzione Il tasto attiva la modalità di modifica. Il tasto fa visualizzare un calendario mensile a discesa (anche premendolo).
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, si apre un menu a tendina con un controllo 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 di selezione della data e dell'ora (DTP) presentano diversi stili di controllo della selezione della data e dell'ora che ne determinano l'aspetto e il comportamento. 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 di DTM_SETFORMAT.

Formato stringhe

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 di tre caratteri del giorno della settimana.
"dddd" Nome completo del giorno della settimana.
"h" L'ora a una o due cifre nel formato a 12 ore.
"hh" Ora a due cifre in formato 12 ore. I valori a cifra singola sono preceduti da uno zero.
"H" L'ora espressa in una o due cifre nel formato a 24 ore.
"HH" L'ora a due cifre nel formato a 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 del mese a una o due cifre.
"MM" Numero di 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, «Non dimenticare» MMM dd',' aaaa produce un output simile a: Non dimenticare mar 23, 1996. Non è necessario usare virgolette con la virgola, quindi "'Non dimenticare' MMM dd, yyyy" è anche valido e produce lo stesso output.

Campi di callback

Oltre alle stringhe di formato standard e al testo del corpo, è anche possibile definire alcune parti della visualizzazione come campi di 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 di selezione di data e ora

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

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

Codice di notifica Descrizione
DTN_CLOSEUP Indica che il calendario a tendina del mese sta per essere rimosso.
DTN_DATETIMECHANGE Segnala una modifica all'interno del controllo DTP.
DTN_DROPDOWN Indica che il calendario del mese a tendina 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_USERSTRING 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_APPCANPARSE.
DTN_WMKEYDOWN Segnala che l'utente ha premuto un tasto in un campo di callback del controllo DTP.

 

Riferimento al controllo selezione data e ora