Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Kontrolka kalendarza miesięcznego implementuje interfejs użytkownika przypominający kalendarz. Zapewnia to użytkownikowi bardzo intuicyjną i rozpoznawalną metodę wprowadzania lub wybierania daty. Kontrolka udostępnia również aplikacji środki uzyskiwania i ustawiania informacji o dacie w kontrolce przy użyciu istniejących typów danych.
- Funkcje kontrolne kalendarza miesięcznego
- lokalizacji
- Czasy w kontroli kalendarza miesięcznego
Funkcje kontrolki kalendarza miesiąca
Poniższy zrzut ekranu przedstawia element kalendarza miesięcznego, który został skonfigurowany do wyświetlenia dwóch miesięcy.
Notatka
Wygląd i zachowanie elementu sterującego kalendarza miesiąca różni się nieco w różnych wersjach biblioteki uruchomieniowej. Ten temat koncentruje się na kontrolce, jak pojawia się w systemie Windows Vista z wersją 6 narzędzia Comctl32.dll.
Kontrolka na ilustracji zawiera następujące funkcje opcjonalne.
- Bieżąca data jest wyświetlana w osobnym wierszu u dołu kontrolki. Jest to styl domyślny.
- "Okrąg dzisiejszy (który w tej wersji jest faktycznie prostokątem) pojawia się wokół bieżącego dnia, a także obok wiersza z napisem 'Dzisiaj' jako sygnał wizualny." Jest to styl domyślny.
- Numery tygodni są wyświetlane po lewej stronie każdego wiersza dni. Należy określić ten styl.
- Niektóre daty są wyświetlane pogrubioną, zgodnie ze stanem dnia ustawionym przez aplikację. Na przykład daty zaplanowanych spotkań mogą być wyświetlane pogrubioną czcionką. Należy określić ten styl.
Notatka
System Windows nie obsługuje dat wcześniejszych niż 1601. Aby uzyskać szczegółowe informacje, zobacz FILETIME.
Kontrolka kalendarza miesięcznego jest oparta na kalendarzu gregoriańskim, który został wprowadzony w 1753 roku. Nie będzie obliczać dat, które są zgodne z kalendarzem juliana, który był używany przed 1753.
Wybieranie dnia
Domyślnie gdy użytkownik kliknie przyciski strzałek w lewym górnym lub prawym górnym rogu kontrolki kalendarza miesiąca, kontrolka aktualizuje jego ekran, aby wyświetlić poprzedni lub następny miesiąc. Użytkownik może również wykonać tę samą akcję, klikając miesiące częściowe wyświetlane przed pierwszym i po ostatnim miesiącu.
Polecenia klawiaturowe, które można wykorzystać do przenoszenia zaznaczenia, są następujące. Kalendarz zawsze przewija się zgodnie z potrzebami, aby wyświetlić wybrany dzień. (Kody kluczy wirtualnych są wyświetlane w tabeli).
| Polecenie | Opis |
|---|---|
| Strzałka w lewo (VK_LEFT) | Wybierz poprzedni dzień. |
| Strzałka w prawo (VK_RIGHT) | Wybierz następny dzień. |
| Strzałka w górę (VK_UP) | Wybierz ten sam dzień w poprzednim tygodniu. |
| Strzałka w dół (VK_DOWN) | Wybierz ten sam dzień w następnym tygodniu. |
| STRONA W GÓRĘ (VK_PRIOR) | Wybierz ten sam dzień w poprzednim miesiącu. (Jeśli ten miesiąc nie ma dnia, zostanie wybrany najbliższy dzień, na przykład wybór zostanie przeniesiony z 31 marca do 28 lutego lub 29). |
| STRONA W DÓŁ (VK_NEXT) | Wybierz ten sam dzień w następnym miesiącu. |
| STRONA GŁÓWNA (VK_HOME) | Wybierz pierwszy dzień bieżącego miesiąca. |
| Koniec (VK_END) | Wybierz ostatni dzień bieżącego miesiąca. |
| CTRL + STRONA GŁÓWNA | Przewiń jeden miesiąc do tyłu i wybierz dzień w kolumnie po lewej stronie. |
| CTRL + END (Przejdź na koniec dokumentu) | Przewiń jeden miesiąc do przodu i wybierz dzień w kolumnie z prawej strony. |
| CTRL + PAGE UP | Wybierz ten sam dzień w poprzednim miesiącu. Liczba miesięcy o którą przesuwa się zaznaczenie, to liczba miesięcy wyświetlana w kontrolce. Jeśli na przykład zostaną wyświetlone dwa miesiące, wybór zostanie przeniesiony z 6 czerwca do 6 maja. |
| CTRL + Page Down | Wybierz ten sam dzień w poprzednim miesiącu. Liczba miesięcy, o którą przesuwa się wybór, jest równa liczbie miesięcy wyświetlanych w kontrolce. Jeśli na przykład zostaną wyświetlone dwa miesiące, wybór zostanie przeniesiony z 6 czerwca do 6 sierpnia. |
Jeśli kontrolka kalendarza miesiąca nie używa stylu MCS_NOTODAY, użytkownik może wrócić do bieżącego dnia, klikając tekst "Dzisiaj" w dolnej części kontrolki. Jeśli bieżący dzień nie jest widoczny, kontrolka aktualizuje swój wyświetlacz, aby go pokazać.
Aplikacja może zmienić liczbę miesięcy, przez które kontrolka aktualizuje jego wyświetlanie przy użyciu komunikatu MCM_SETMONTHDELTA lub odpowiedniego makra, MonthCal_SetMonthDelta. Jednak klucze PAGE UP i PAGE DOWN zmieniają wybrany miesiąc o jeden, niezależnie od liczby wyświetlanych miesięcy lub wartości ustawionej przez MCM_SETMONTHDELTA.
Wybieranie nieprzylegającego miesiąca
Gdy użytkownik kliknie nazwę wyświetlanego miesiąca, zostaną wyświetlone wszystkie miesiące w roku (we wcześniejszych wersjach jest to menu podręczne). Użytkownik może wybrać miesiąc na liście. Jeśli wybór użytkownika nie jest widoczny, kontrolka kalendarza miesiąca przewija ekran w celu wyświetlenia wybranego miesiąca. Na poniższym zrzucie ekranu kontrolka kalendarza miesięcznego pokazuje miesiące dwóch sąsiednich lat.
Wybieranie innego roku
Jeśli użytkownik kliknie rok, zostanie wyświetlona grupa lat, a użytkownik może wybrać inną, jak pokazano na poniższym zrzucie ekranu.
Lokalizacja
Kontrolka kalendarza miesięcznego pobiera format i wszystkie ciągi z LOCALE_USER_DEFAULT.
Godziny w kontrolce kalendarza miesiąca
Kontrolka kalendarza miesiąca nie wyświetla czasu. Jednak struktura SYSTEMTIME używana do ustawiania i pobierania wybranej daty lub dzisiejszej daty zawiera pola godziny. Gdy data jest ustawiana programowo, kontrolka albo kopiuje pola czasu w takiej formie, w jakiej są, albo najpierw je weryfikuje i, jeśli są nieprawidłowe, zapisuje domyślne czasy. Poniżej znajduje się lista komunikatów, które ustawiają datę i opis sposobu traktowania pól czasu.
| Komunikat | Opis |
|---|---|
| MCM_SETCURSEL | Kontrolka kopiuje pola czasu, tak jak są, bez walidacji ani modyfikacji. |
| MCM_SETRANGE | Pola czasu przekazanych struktur są weryfikowane. Jeśli są prawidłowe, pola czasu są kopiowane bez modyfikacji. Jeśli są one nieprawidłowe, kontrolka kopiuje pola czasu z dzisiejszych danych. |
| MCM_SETSELRANGE | Pola czasu przekazanych struktur są weryfikowane. Jeśli są prawidłowe, pola czasu są kopiowane bez modyfikacji. Jeśli są one nieprawidłowe, kontrolka zachowuje pola czasu z bieżących zakresów wyboru. |
| MCM_SETTODAY | Kontrolka kopiuje pola czasu, tak jak są, bez walidacji ani modyfikacji. |
Po pobraniu daty z kontrolki pola godziny zostaną skopiowane z przechowywanych czasów bez modyfikacji. Obsługa pól czasu przez kontrolkę jest udostępniana jako wygoda dla programisty. Kontrolka nie sprawdza ani nie modyfikuje pól czasu w wyniku jakiejkolwiek operacji innej niż wymienione powyżej.