Informazioni sui controlli del calendario mensile

Un controllo calendario mensile implementa un'interfaccia utente simile al calendario. Ciò fornisce all'utente un metodo molto intuitivo e riconoscibile di immettere o selezionare una data. Inoltre, il controllo fornisce all'applicazione i mezzi per ottenere e impostare le informazioni relative alla 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.

screen shot of a dialog box with a month calendar control showing two months, side by side

Nota

L'aspetto e il comportamento del controllo calendario mensile differiscono leggermente in versioni diverse della libreria di runtime. Questo argomento è incentrato sul controllo visualizzato 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. (L'oggetto nella tabella sono 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.
HOME (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 +PGGIÙ 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 visualizzarla.

Un'applicazione può modificare il numero di mesi in base al quale il controllo ne aggiorna la visualizzazione utilizzando il messaggio MCM_edizione Standard TMONTHDELTA 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_edizione Standard TMONTHDELTA.

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.

screen shot of a dialog box with a month calendar control showing all the months of 2007 and 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.

screen shot of a month calendar control showing all years from 1999 to 2020

Localizzazione

Il controllo month-calendar ottiene il formato e tutte le stringhe da LOCALE_Uedizione StandardR_DEFAULT.

Orari nel controllo 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.

Message Descrizione
MCM_edizione Standard TCUR edizione Standard L Il controllo copia i campi dell'ora così come sono, senza convalida o modifica.
MCM_edizione Standard TRANGE I campi dell'ora 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_edizione Standard T edizione Standard LRANGE I campi dell'ora 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_edizione Standard TTODAY 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 dal controllo viene fornita per praticità al programmatore. Il controllo non esamina o modifica i campi dell'ora in seguito a qualsiasi operazione diversa da quelli elencati in precedenza.