Informacje o kontrolkach selektora daty i godziny
Kontrolka selektora daty i godziny (DTP) udostępnia prosty i intuicyjny interfejs umożliwiający wymianę informacji o dacie i godzinie z użytkownikiem. Na przykład za pomocą kontrolki DTP można poprosić użytkownika o wprowadzenie daty, a następnie łatwo pobrać wybór.
Omówiono następujące tematy:
- interfejs użytkownika selektora dat i godzin
- style i formaty kontrolek selektora daty i godziny
- komunikaty powiadomień kontrolki selektora daty i godziny
- Tematy pokrewne
Notatka
System Windows nie obsługuje dat wcześniejszych niż 1601. Aby uzyskać szczegółowe informacje, zobacz strukturę FILETIME.
Kontrolka 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.
Interfejs użytkownika selektora dat i godzin
Obszar klienta kontrolki selektora daty i godziny (DTP) wyświetla informacje o dacie lub godzinie lub w obu tych przypadkach oraz działa jako interfejs, za pomocą którego użytkownicy modyfikują informacje. Datę można wybrać z kalendarza lub za pomocą kontrolki góra-dół; czas można zmienić, wpisując w polach zdefiniowanych przez ciągi formatu kontrolki . Opcjonalnie kontrolka wyświetla pole wyboru. Po sprawdzeniu można pobrać wartość w kontrolce; w przeciwnym razie kontrolka jest uważana za niezainicjowaną.
Poniższa ilustracja przedstawia okno zawierające trzy kontrolki selektora dat. Pierwsza kontrolka selektora dat została utworzona przy użyciu stylu DTS_SHOWNONE, drugiego ze stylem DTS_UPDOWN i trzeciego bez specjalnych stylów. W trzeciej kontrolce użytkownik kliknął strzałkę w dół, aby wyświetlić kalendarz.
Poniższa ilustracja przedstawia okna z trzema kontrolkami, które zawierają czas.
Pierwsza kontrolka została utworzona przy użyciu stylu DTS_TIMEFORMAT i pokazuje czas w czasie domyślnym, który składa się z czterech pól. Użytkownik może wpisać prawidłową wartość w dowolnym z tych pól lub wybrać pole i zmienić wartość przy użyciu kontrolki w górę lub strzałek.
Druga kontrolka pokazuje niestandardowy zestaw formatów przy użyciu DateTime_SetFormat. Podobnie jak w przypadku pierwszej kontrolki, użytkownik może zmienić pola czasu, wpisując lub używając strzałek. Dzień tygodnia można zmienić, wybierając datę z kalendarza, który zostanie otwarty, gdy użytkownik kliknie strzałkę w dół.
Trzecia kontrolka pokazuje, jak można dodać dowolny tekst do kontrolki. Użytkownik może wybrać godzinę (od 1 do 24), wpisując wartość, używając klawiszy strzałek lub kontrolki góra-dół.
Kontrolka DTP automatycznie aktualizuje informacje wewnętrzne na podstawie danych wejściowych użytkownika. Kontrolka rozpoznaje następujące dane wejściowe jako prawidłowe.
Kategoria danych wejściowych | Opis |
---|---|
klawisze strzałek | Kontrolka akceptuje klawisze strzałek do nawigowania między polami w kontrolce i zmiany wartości. Użytkownik może nacisnąć odpowiednie klawisze, aby przejść przez kontrolkę. Jeśli użytkownik próbuje przejść obok ostatniego pola w danym kierunku, fokus klawiatury przenosi się do pola po przeciwnej stronie kontrolki. Klawisze zmieniają wartości przyrostowo w bieżącym polu. |
Koniec i strona główna | Kontrolka akceptuje wirtualne klawisze VK_END i VK_HOME, aby zmienić wartość w bieżącym polu na odpowiednie granice: górną i dolną. |
Klucze funkcji | Klucz aktywuje tryb edycji. Naciśnięcie klawisza powoduje, że kontrolka wyświetla rozwijany kalendarz miesięczny (zrobienie tego również osiąga ten efekt). |
Liczby | Kontrolka akceptuje dane wejściowe liczbowe w dwóch segmentach znaków. Jeśli wartość wprowadzona przez użytkownika jest nieprawidłowa (na przykład ustawienie miesiąca na 14), kontrolka ją odrzuca i resetuje ekran do poprzedniej wartości. |
Plus i Minus | Kontrola akceptuje wirtualne klawisze VK_ADD i VK_SUBTRACT z klawiatury numerycznej, aby zwiększać i zmniejszać wartość w bieżącym polu. |
Kontrolki DTP, które nie używają stylu DTS_UPDOWN, wyświetlają przycisk strzałki. Jeśli użytkownik kliknie ten przycisk, zostanie wyłączona kontrolka kalendarza miesiąca. Użytkownik może wybrać określoną datę, klikając obszar kalendarza.
Style i formaty kontrolek selektora daty i godziny
Kontrolki selektorów daty i czasu (DTP) posiadają różne style kontrolek selektorów daty i czasu, które określają wygląd i zachowanie tych kontrolek. Określ styl podczas tworzenia kontrolki za pomocą parametru dwStyleCreateWindowEx. Aby pobrać lub zmienić styl okna po utworzeniu kontrolki, użyj GetWindowLong i SetWindowLong.
Wstępnie ustawione formaty
Dostępne są trzy wstępnie ustawione formaty wyświetlania daty i jeden do wyświetlania czasu. Ustaw te formaty, wybierając jeden z następujących stylów okna.
Format | Opis |
---|---|
DTS_LONGDATEFORMAT | Wyświetlacz będzie wyglądać następująco: "Piątek, 19 kwietnia 1996". |
DTS_SHORTDATEFORMAT | Ekran będzie wyglądać następująco: "4/19/96". |
DTS_SHORTDATECENTURYFORMAT | w wersji 5.80. Ekran będzie wyglądać następująco: "4/19/1996". |
DTS_TIMEFORMAT | Ekran będzie wyglądać następująco: "17:31:42 po południu". |
Formaty niestandardowe
Kontrolka DTP opiera się na ciągu formatu, aby określić sposób wyświetlania pól informacji. Jeśli wstępnie ustawione formaty nie są wystarczające, możesz utworzyć format niestandardowy, definiując własny ciąg formatu. Formaty niestandardowe zapewniają większą elastyczność aplikacji. Umożliwiają one określenie kolejności wyświetlania pól informacji przez kontrolkę. Możesz dołączyć tekst treści, a także pola wywołania zwrotnego w celu żądania informacji od użytkownika. Po utworzeniu ciągu należy przypisać go do kontrolki DTP z komunikatem DTM_SETFORMAT.
Formatowanie ciągów
Ciąg formatu DTP składa się z serii elementów, które reprezentują określony element informacji i definiują jego format wyświetlania. Elementy będą wyświetlane w kolejności, w jakiej pojawiają się w ciągu formatu.
Elementy formatu daty i godziny zostaną zastąpione rzeczywistą datą i godziną. Są one definiowane przez następujące grupy znaków.
Pierwiastek | Opis |
---|---|
"d" | Jeden lub dwucyfrowy dzień. |
"dd" | Dwucyfrowy dzień. Wartości dni jednocyfrowych są poprzedzone zerem. |
"ddd" | Trzyznaczny skrót dnia tygodnia. |
"dddd" | Pełna nazwa dnia tygodnia. |
"h" | Jedno- lub dwucyfrowa godzina w formacie 12-godzinnym. |
"hh" | Dwucyfrowa godzina w formacie 12-godzinnym. Wartości jednocyfrowe są poprzedzone zerem. |
"H" | Jedno- lub dwucyfrowa godzina w formacie 24-godzinnym. |
"HH" | Dwucyfrowa godzina w formacie 24-godzinnym. Wartości jednocyfrowe są poprzedzone zerem. |
"m" | Minuty w formacie jednocyfrowym lub dwucyfrowym. |
"mm" | Minuta zapisana za pomocą dwóch cyfr. Wartości jednocyfrowe są poprzedzone zerem. |
"M" | Jeden lub dwucyfrowy numer miesiąca. |
"MM" | Dwucyfrowy numer miesiąca. Wartości jednocyfrowe są poprzedzone zerem. |
"MMM" | Trzyliterowy skrót miesiąca. |
"MMMM" | Pełna nazwa miesiąca. |
t | Jednoliterowy skrót AM/PM (czyli AM jest wyświetlany jako "A"). |
"tt" | Dwuliterowy skrót AM/PM (czyli am jest wyświetlany jako "AM"). |
"yyy" | Ostatnie dwie cyfry roku (czyli 1996) będą wyświetlane jako "96"). |
"yyyy" | Cały rok (czyli rok 1996 będzie wyświetlany jako "1996"). |
Aby uzyskać bardziej czytelne informacje, możesz dodać tekst treści do ciągu formatu, umieszczając go w pojedynczych cudzysłowach. Spacje i znaki interpunkcyjne nie muszą być cytowane.
Notatka
Znaki nieformatowane, które nie są rozdzielane przez pojedyncze cudzysłowy, spowodują nieprzewidywalne wyświetlanie przez kontrolkę DTP.
Aby na przykład wyświetlić bieżącą datę z formatem "Dziś jest: 04:22:31 wtorek Mar 23, 1996", ciąg formatu to "'Dziś jest: 'hh':'m':'s dddd MMM dd', 'yyyy'". Aby uwzględnić pojedynczy apostrof w tekście, użyj dwóch kolejnych pojedynczych apostrofów. Na przykład "'Nie zapomnij' MMM dd',' yyyy" generuje dane wyjściowe, które wyglądają następująco: Nie zapomnij Mar 23, 1996. Nie trzeba używać cudzysłowów z przecinkiem, więc "'Nie zapomnij' MMM dd, yyyy" jest również prawidłowy i daje ten sam wynik.
Pola wywołania zwrotnego
Oprócz standardowych ciągów formatu i tekstu treści można również zdefiniować niektóre części ekranu jako pola wywołania zwrotnego . Te pola mogą służyć do zadawania użytkownikowi pytań w celu uzyskania informacji. Aby zadeklarować pole wywołania zwrotnego, uwzględnij co najmniej jeden znak "X" (kod ASCII 88) w dowolnym miejscu w ciągu formatu. Możesz utworzyć pola wywołania zwrotnego, które mają unikatową tożsamość, powtarzając znak "X". W związku z tym ciąg formatu "XX dddd MMM ddd", "yyy XXX" zawiera dwa unikatowe pola wywołania zwrotnego, "XX" i "XXX". Podobnie jak w przypadku innych pól kontrolnych DTP, pola wywołań zwrotnych są wyświetlane w kolejności od lewej do prawej zgodnie z ich lokalizacją w ciągu formatu.
Gdy kontrolka DTP analizuje ciąg formatu i napotyka pole wywołania zwrotnego, wysyła DTN_FORMAT i DTN_FORMATQUERY kody powiadomień. Element ciągu formatu odpowiadający polu wywołania zwrotnego jest dołączany do powiadomień, aby umożliwić aplikacji odbierającej określenie, które pole wywołania zwrotnego jest zapytane. Właściciel elementu sterującego musi odpowiadać na te powiadomienia, aby upewnić się, że informacje niestandardowe są prawidłowo wyświetlane.
Powiadomienia kontrolki wyboru daty i czasu
Kontrolka selektora daty i godziny (DTP) wysyła kody powiadomień, gdy odbiera dane wejściowe od użytkownika lub procesuje i reaguje na pola do wywołania zwrotnego. Rodzic kontrolki odbiera te kody powiadomień w postaci komunikatów WM_NOTIFY.
Następujące kody powiadomień są używane z kontrolkami DTP.
Kod powiadomienia | Opis |
---|---|
DTN_CLOSEUP | Wskazuje, że kalendarz rozwijany miesięczny wkrótce zostanie usunięty. |
DTN_DATETIMECHANGE | Sygnalizuje zmianę w kontrolce DTP. |
DTN_DROPDOWN | Wskazuje, że kalendarz listy rozwijanej wkrótce zostanie wyświetlony. |
DTN_FORMAT | Żąda tekstu do wyświetlenia w części ciągu formatu opisanego jako pole wywołania zwrotnego. |
DTN_FORMATQUERY | Żąda informacji o maksymalnym dozwolonym rozmiarze tekstu, który ma być wyświetlany w polu wywołania zwrotnego. |
DTN_USERSTRING | Sygnalizuje koniec operacji edytowania użytkownika w kontrolce. To powiadomienie jest wysyłane tylko przez kontrolki DTP używające stylu DTS_APPCANPARSE. |
DTN_WMKEYDOWN | Informuje, że użytkownik nacisnął klawisz w polu wywołania zwrotnego kontrolki DTP. |
Tematy pokrewne