Megosztás a következőn keresztül:


Tudnivalók a dátum- és időválasztó vezérlőkről

A dátum- és időválasztó (DTP) vezérlő egy egyszerű és intuitív felületet biztosít, amelyen keresztül dátum- és időadatokat cserélhet egy felhasználóval. Egy DTP-vezérlővel például megkérheti a felhasználót, hogy adjon meg egy dátumot, majd egyszerűen kérje le a kijelölést.

A következő témaköröket tárgyaljuk:

Jegyzet

A Windows nem támogatja az 1601 előtti dátumokat. A részletekért tekintse meg a FILETIME struktúráját.

A vezérlő az 1753-ban bevezetett Gergely-naptáron alapul. Nem számítja ki a Julián naptárnak megfelelő dátumokat.

Dátum- és időválasztó felhasználói felülete

A dátum- és időválasztó (DTP) vezérlő ügyfélterülete dátum- vagy időinformációkat jelenít meg, vagy mindkettőt, és az a felület, amelyen keresztül a felhasználók módosítják az információkat. A dátum választható egy naptárból, vagy egy fel/le vezérlő használatával; az idő módosítható a vezérlőelem Format Stringsáltal meghatározott mezőkbe való beírással. Ha szeretné, a vezérlő egy jelölőnégyzetet jelenít meg. Ha be van jelölve, a vezérlőben lévő érték lekérhető; ellenkező esetben a vezérlő nem inicializáltnak minősül.

Az alábbi ábrán egy három dátumválasztó vezérlőt tartalmazó ablak látható. Az első dátumválasztó vezérlőelem a DTS_SHOWNONE stílussal készült, a második a DTS_UPDOWN stílussal készült, és a harmadik nem kapott speciális stílusokat. A harmadik vezérlőben a felhasználó a lefelé mutató nyílra kattintva jeleníti meg a naptárt.

képernyőfelvétel egy ablakról, amely a dátumválasztó vezérlők három stílusát mutatja be

Az alábbi ábrán egy három vezérlővel rendelkező ablak látható, amelyek tartalmazzák az időt.

Az első vezérlőelem DTS_TIMEFORMAT stílussal lett létrehozva, és az alapértelmezett időpontban jelenik meg, amely négy mezőből áll. A felhasználó bármelyik mezőbe beírhat érvényes értéket, vagy kijelölheti a mezőt, és módosíthatja az értéket a felfelé vagy nyílbillentyűkkel.

A második vezérlő egy egyéni formátumkészletet jelenít meg DateTime_SetFormathasználatával. Az első vezérlőhöz hasonlóan a felhasználó is módosíthatja az időmezőket begépeléssel vagy nyílbillentyűkkel. A hét napja módosítható úgy, hogy kiválaszt egy dátumot a naptárból, amely akkor nyílik meg, amikor a felhasználó a lefelé mutató nyílra kattint.

A harmadik vezérlő azt mutatja be, hogyan adható hozzá tetszőleges szöveg a vezérlőelemhez. A felhasználó egy órát (1-től 24-ig) választhat beírással, a nyílbillentyűkkel vagy a felfelé mutató vezérlőelem használatával.

képernyőfelvétel egy ablakról, amely három vezérlőt jelenít meg, amelyek tartalmazzák az időt

A DTP-vezérlő automatikusan frissíti a belső információkat a felhasználó bemenete alapján. A vezérlő a következőket ismeri fel érvényes bemenetként.

Bemeneti kategória Leírás
Nyílbillentyűk A vezérlő elfogadja a nyílbillentyűket a vezérlőelem mezőinek navigálásához és az értékek módosításához. A felhasználó lenyomhatja a billentyűket a vezérlőn való mozgáshoz Ha a felhasználó egy adott irányban próbál túllépni az utolsó mezőn, a billentyűzetfókusz "körbefut" a vezérlő ellentétes oldalán lévő mezőre. A gombok módosítják az aktuális mező értékeit növekményesen.
End és Kezdőlap A vezérlő elfogadja a VK_END és VK_HOME virtuális kulcsokat, hogy az aktuális mező értékét a felső és az alsó korlátra módosítsa.
Függvénykulcsok A kulcs aktiválja a szerkesztési módot. A kulcs hatására a vezérlőelem egy legördülő havi naptár vezérlőelemet jelenít meg (a lenyomással ez is megtörténik).
Számok A vezérlő elfogadja a numerikus bemenetet kétkarakú szegmensekben. Ha a felhasználó által megadott érték érvénytelen (például a hónapot 14-re állítja), a vezérlőelem elutasítja, és visszaállítja a megjelenítést az előző értékre.
Plusz és mínusz A vezérlő elfogadja a VK_ADD és VK_SUBTRACT virtuális kulcsokat a numerikus billentyűzetről az aktuális mező értékének növeléséhez és csökkenéséhez.

 

A DTS_UPDOWN stílust nem használó DTP-vezérlők nyílgombot jelenítenek meg. Ha a felhasználó erre a gombra kattint, egy hónap naptárvezérlő legördül. A felhasználó a naptár egy területére kattintva választhat ki egy adott dátumot.

Dátum- és időválasztó vezérlőstílusok és -formátumok

A dátum- és időválasztó (DTP) vezérlőknek számos Dátum- és Időválasztó Vezérlőstílusa van, amelyek meghatározzák a vezérlők megjelenését és viselkedését. A CreateWindowExdwStyle paraméterével történő vezérlőelem létrehozásakor adja meg a stílust. A vezérlő létrehozása után az ablakstílus lekéréséhez vagy módosításához használja GetWindowLong és SetWindowLong.

Előre beállított formátumok

A dátum megjelenítéséhez három előre beállított formátum érhető el, egy pedig az idő megjelenítéséhez. Ezeket a formátumokat az alábbi ablakstílusok egyikének kiválasztásával állíthatja be.

Formátum Leírás
DTS_LONGDATEFORMAT A kijelző a következőhöz hasonló lesz: "1996. április 19., péntek".
DTS_SHORTDATEFORMAT A kijelző a következőképpen fog kinézni: "4/19/96".
DTS_SHORTDATECENTURYFORMAT 5.80. A kijelző a következőképpen fog kinézni: "1996. 04. 19.".
DTS_TIMEFORMAT A kijelző így fog kinézni: "5:31:42 PM".

 

Egyéni formátumok

A DTP-vezérlők egy formátumsztringre támaszkodnak annak meghatározásához, hogy miként jelenítik meg az információmezőket. Ha az előre beállított formátumok nem elegendőek, létrehozhat egy egyéni formátumot saját formátumsztring definiálásával. Az egyéni formátumok nagyobb rugalmasságot biztosítanak az alkalmazások számára. Lehetővé teszik annak megadását, hogy a vezérlő milyen sorrendben jelenítse meg az információmezőket. A törzsszöveget és a visszahívási mezőket is megadhatja a felhasználótól való információkéréshez. A sztring létrehozása után egy DTM_SETFORMAT üzenettel rendeli hozzá a DTP-vezérlőhöz.

Sztringek formázása

A DTP formátumsztring olyan elemek sorozatából áll, amelyek egy adott információt képviselnek, és meghatározzák annak megjelenítési formátumát. Az elemek a formátumsztringben megjelenő sorrendben jelennek meg.

A dátum- és időformátum elemeit a tényleges dátum és idő váltja fel. Ezeket a következő karaktercsoportok határozzák meg.

Elem Leírás
"d" Az egy- vagy kétjegyű nap.
"dd" A kétjegyű nap. Az egyjegyű napi értékeket nulla előzi meg.
"ddd" A három karakterből álló hétköznapot jelölő rövidítés.
"dddd" A teljes hétköznap neve.
"h" Egy- vagy kétjegyű óra 12 órás formátumban.
"óó" A kétjegyű óra 12 órás formátumban. Az egyjegyű értékeket nulla előzi meg.
"H" Az egy- vagy kétjegyű óra 24 órás formátumban.
"HH" A kétjegyű óra 24 órás formátumban. Az egyjegyű értékeket nulla előzi meg.
"m" Az egy- vagy kétjegyű percek.
"mm" A kétjegyű perc. Az egyjegyű értékeket nulla előzi meg.
"M" Az egy- vagy kétjegyű havi szám.
"MM" A kétjegyű hónap száma. Az egyjegyű értékeket nulla előzi meg.
"MMM" A három karakterből álló hónap rövidítése.
"MMMM" A teljes hónap neve.
t Az egybetűs AM/PM rövidítés (azaz az AM "A" néven jelenik meg).
"tt" A kétbetűs AM/PM rövidítés (azaz az AM "AM" néven jelenik meg).
"yy" Az év utolsó két számjegye (azaz 1996 a "96"- ként jelenik meg).
"yyyy" A teljes év (azaz "1996" jelenik meg, mint 1996).

 

Ha olvashatóbbá szeretné tenni az információkat, a formázási sztringhez szövegtörzset adhat hozzá egyetlen idézőjelbe foglalva. A szóközöket és írásjeleket nem kell idézni.

Jegyzet

Az egyszeri idézőjelek által nem tagolt nem formázott karakterek kiszámíthatatlan megjelenítést eredményeznek a DTP-vezérlőben.

Ha például az aktuális dátumot "Ma van: 04:22:31 kedd, március 23., 1996" formátumban szeretné megjeleníteni, a formátumsztring a következő: "'Ma van: 'hh':'m':'s dddd MMM dd', 'yyyy". Ha egyetlen idézőjelet szeretne belefoglalni a szövegtörzsbe, használjon két egymást követő egyetlen idézőjelet. Például a "'Ne felejtsd el' MMM dd',' yyyy" olyan kimenetet hoz létre, amely így néz ki: Ne felejtsd el 1996. március 23. Nem szükséges idézőjeleket használni a vesszővel, ezért a "Ne felejtsd el" MMM dd, yyyy is érvényes, és ugyanazt a kimenetet eredményezi.

Visszahívási mezők

A szabványos formázó sztringek és szövegtörzs mellett a megjelenítés bizonyos részeit visszahívási mezőkként is megadhatja. Ezek a mezők a felhasználó adatainak lekérdezésére használhatók. Visszahívási mező deklarálásához adjon meg egy vagy több "X" karaktert (ASCII Code 88) bárhol a formátumsztringben. Az "X" karakter megismétlésével létrehozhat egyedi identitással rendelkező visszahívási mezőket. Így az "XX dddd MMM dd', 'yyy XXX" formátumú karakterlánc két egyedi visszahívási mezőt tartalmaz: "XX" és "XXX". Más DTP-vezérlőmezőkhöz hasonlóan a visszahívási mezők is balról jobbra sorrendben jelennek meg a formátumsztringben elfoglalt helyük alapján.

Amikor a DTP-vezérlő elemzi a formátumsztringet, és visszahívási mezővel találkozik, DTN_FORMAT és DTN_FORMATQUERY értesítési kódokat küld. A visszahívási mezőnek megfelelő formázási sztringelem szerepel az értesítésekben, így a fogadó alkalmazás megállapíthatja, hogy melyik visszahívási mezőt kérdezi le. A vezérlő tulajdonosának válaszolnia kell ezekre az értesítésekre, hogy az egyéni információk megfelelően jelenjenek meg.

Dátum- és időválasztó vezérlő értesítési üzenetei

A dátum- és időválasztó (DTP) vezérlő értesítési kódokat küld, amikor felhasználói bemenetet vagy folyamatokat fogad, és reagál a visszahívási mezőkre. A vezérlő szülője ezeket az értesítési kódokat WM_NOTIFY üzenetek formájában kapja meg.

A következő értesítési kódok DTP-vezérlőkkel használhatók.

Értesítési kód Leírás
DTN_CLOSEUP Azt jelzi, hogy a legördülő havi naptár hamarosan el lesz távolítva.
DTN_DATETIMECHANGE Változást jelez a DTP-vezérlőn belül.
DTN_DROPDOWN Azt jelzi, hogy a legördülő havi naptár hamarosan megjelenik.
DTN_FORMAT A visszahívási mezőként leírt formátumsztring része szövegének megjelenítését kéri.
DTN_FORMATQUERY Információt kér a visszahívási mezőben megjelenítendő szöveg maximális megengedett méretéről.
DTN_USERSTRING A felhasználó szerkesztési műveletének végét jelzi a vezérlőn belül. Ezt az értesítést csak a DTS_APPCANPARSE stílust használó DTP-vezérlők küldik.
DTN_WMKEYDOWN Azt jelzi, hogy a felhasználó lenyomott egy kulcsot a DTP-vezérlő visszahívási mezőjében.

 

dátum- és időválasztó vezérlőjének referencia-