Condividi tramite


Informazioni sui controlli del calendario mensile

Un controllo calendario mensile implementa un'interfaccia utente simile al calendario. In questo modo l'utente dispone di un metodo molto intuitivo e riconoscibile per l'immissione o la selezione di una data. Il controllo fornisce inoltre all'applicazione i mezzi per ottenere e impostare le informazioni sulla data nel controllo utilizzando i tipi di dati esistenti.

Funzionalità di controllo del calendario mensile

La schermata seguente mostra un controllo del calendario mensile ridimensionato per visualizzare due mesi.

schermata di una finestra di dialogo con un controllo calendario mensile che mostra due mesi, affiancati

Nota

L'aspetto e il comportamento del controllo calendario mensile differiscono leggermente in versioni diverse della libreria di runtime. Questo argomento è incentrato sul controllo così come appare in Windows Vista, con la versione 6 di Comctl32.dll.

 

Il controllo nell'illustrazione include le funzionalità facoltative seguenti.

  • La data corrente viene visualizzata in una riga separata nella parte inferiore del controllo. Questo è lo stile predefinito.
  • Il "cerchio odierno" (in realtà un rettangolo in questa versione) appare intorno al giorno corrente, e accanto alla linea "Oggi" come segnale visivo. Questo è lo stile predefinito.
  • I numeri della settimana vengono visualizzati a sinistra di ogni riga di giorni. Questo stile deve essere specificato.
  • Alcune date vengono visualizzate in grassetto, in base allo stato del giorno impostato dall'applicazione. Ad esempio, le date con riunioni pianificate potrebbero essere visualizzate in grassetto. Questo stile deve essere specificato.

Nota

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

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

 

Selezione di un giorno

Per impostazione predefinita, quando un utente fa clic sui pulsanti freccia in alto a sinistra o in alto a destra del controllo calendario mensile, il controllo aggiorna la visualizzazione per visualizzare il mese precedente o successivo. L'utente può anche eseguire la stessa azione facendo clic sui mesi parziali visualizzati prima del primo mese e dopo l'ultimo mese.

Per spostare la selezione, è anche possibile usare i comandi di tastiera seguenti. Il calendario scorre sempre in base alle esigenze per visualizzare il giorno selezionato. Nella tabella vengono visualizzati i codici di chiave virtuale .

Comando Descrizione
Freccia sinistra (VK_LEFT) Selezionare il giorno precedente.
Freccia destra (VK_RIGHT) Selezionare il giorno successivo.
Freccia SU (VK_UP) Selezionare lo stesso giorno della settimana precedente.
Freccia giù (VK_DOWN) Selezionare lo stesso giorno nella settimana successiva.
PAGE UP (VK_PRIOR) Selezionare lo stesso giorno nel mese precedente. Se il mese non ha il giorno, viene selezionato il giorno più vicino, ad esempio la selezione passa dal 31 marzo al 28 febbraio o dal 29 febbraio.
PAGINA GIÙ (VK_NEXT) Selezionare lo stesso giorno nel mese successivo.
INIZIO (VK_HOME) Selezionare il primo giorno del mese corrente.
END (VK_END) Selezionare l'ultimo giorno del mese corrente.
CTRL + HOME Scorrere un mese indietro e selezionare un giorno nella colonna più a sinistra.
CTRL+ FINE Scorrere un mese avanti e selezionare un giorno nella colonna più a destra.
CTRL + PAGINA SU Selezionare lo stesso giorno in un mese precedente. Il numero di mesi in base al quale la selezione viene spostata è il numero di mesi visualizzati nel controllo. Ad esempio, se vengono visualizzati due mesi, la selezione passerà dal 6 giugno al 6 maggio.
CTRL + PAGGIÙ Selezionare lo stesso giorno in un mese precedente. Il numero di mesi in base al quale la selezione viene spostata è il numero di mesi visualizzati nel controllo. Ad esempio, se vengono visualizzati due mesi, la selezione passerà dal 6 giugno al 6 agosto.

 

Se un controllo calendario mensile non utilizza lo stile MCS_NOTODAY, l'utente può tornare al giorno corrente facendo clic sul testo "Oggi" nella parte inferiore del controllo. Se il giorno corrente non è visibile, il controllo ne aggiorna la visualizzazione per mostrarlo.

Un'applicazione può modificare il numero di mesi in base al quale il controllo aggiorna la visualizzazione usando il messaggio di MCM_SETMONTHDELTA o la macro corrispondente, MonthCal_SetMonthDelta. Tuttavia, i tasti PAGE UP e PAGE DOWN modificano il mese selezionato per uno, indipendentemente dal numero di mesi visualizzato o dal valore impostato da MCM_SETMONTHDELTA.

Selezione di un mese non adiacente

Quando un utente fa clic sul nome di un mese visualizzato, vengono elencati tutti i mesi dell'anno (nelle versioni precedenti, si tratta di un menu a comparsa). L'utente può selezionare un mese nell'elenco. Se la selezione dell'utente non è visibile, il controllo calendario del mese scorre la visualizzazione per visualizzare il mese scelto. Nella schermata seguente, un controllo del calendario mensile mostra i mesi di due anni adiacenti.

schermata di una finestra di dialogo con un controllo calendario mensile che mostra tutti i mesi del 2007 e del 2008

Selezione di un anno diverso

Se l'utente fa clic sull'anno, viene elencato un gruppo di anni e l'utente può selezionarne uno diverso, come illustrato nella schermata seguente.

schermata di un controllo del calendario mensile che mostra tutti gli anni dal 1999 al 2020

Localizzazione

Il controllo del calendario mensile prende il suo formato e tutte le stringhe da LOCALE_USER_DEFAULT.

Orari nel selettore calendario mensile

Il controllo calendario mensile non visualizza l'ora. Tuttavia, la struttura SYSTEMTIME utilizzata per impostare e recuperare la data selezionata o la data odierna contiene campi di ora. Quando una data viene impostata a livello di codice, il controllo copia i campi di ora così come sono o li convalida prima e quindi, se non sono validi, archivia le ore predefinite correnti. Di seguito è riportato un elenco dei messaggi che impostano una data e una descrizione della modalità di trattamento dei campi ora.

Messaggio Descrizione
MCM_SETCURSEL Il controllo copia i campi dell'ora così come sono, senza convalida o modifica.
MCM_SETRANGE I campi relativi al tempo delle strutture passate vengono convalidati. Se sono validi, i campi dell'ora vengono copiati senza modifiche. Se non sono validi, il controllo copia i campi dell'ora dai dati di oggi.
MCM_SETSELRANGE I campi temporali delle strutture passate vengono convalidati. Se sono validi, i campi dell'ora vengono copiati senza modifiche. Se non sono validi, il controllo mantiene i campi di tempo dagli intervalli di selezione correnti.
MCM_SETTODAY Il controllo copia i campi dell'ora così come sono, senza convalida o modifica.

 

Quando una data viene recuperata dal controllo , i campi dell'ora verranno copiati dall'ora archiviata senza modifiche. La gestione dei campi dell'ora da parte del controllo è considerata una comodità per il programmatore. Il controllo non esamina o modifica i campi dell'ora in seguito a qualsiasi operazione diversa da quelli elencati in precedenza.