檢視原始碼 wxCalendarCtrl (wx v2.4.3)
日曆控制項允許使用者選擇日期。
使用者可以使用鍵盤移動目前的選擇,並按下 <Return>
鍵或雙擊來選擇日期(產生 EVT_CALENDAR
事件)。
通用日曆對於其顯示的客製化具有進階的可能性,如下所述。如果您想在每個平台上使用這些可能性,請使用 wxGenericCalendarCtrl 而不是 wxCalendarCtrl
。
所有全域設定(例如使用的顏色和字型)當然可以變更。此外,可以使用 wxCalendarDateAttr
類別來獨立設定每個月中每一天的顯示樣式。
沒有自訂屬性的項目會以預設的顏色和字型繪製,且沒有邊框,但使用 setAttr/3
設定自訂屬性可以修改其外觀。只要建立自訂屬性物件,並為您想要特殊顯示的日期設定它即可(請注意,控制項將取得指標的所有權,也就是說,它會自行刪除它)。可以使用 wxCalendarDateAttr:setHoliday/2
方法將某一天標記為假日,即使該假日不被 wx_datetime()
識別。
由於屬性是為每一天指定的,因此當月份變更時,它們可能會變更,因此您通常會在 EVT_CALENDAR_PAGE_CHANGED
事件處理常式中更新它們。
如果未給定 wxCAL_SUNDAY_FIRST
或 wxCAL_MONDAY_FIRST
樣式,則一週的第一天會盡可能地根據作業系統的設定來決定。原生 wxGTK 日曆會根據地區設定選擇一週的第一天,而這些樣式對它沒有影響。
樣式
此類別支援以下樣式
wxCAL_SUNDAY_FIRST:將星期日顯示為一週的第一天(在 wxGTK 中無效)
wxCAL_MONDAY_FIRST:將星期一顯示為一週的第一天(在 wxGTK 中無效)
wxCAL_SHOW_HOLIDAYS:在日曆中反白顯示假日(僅限通用)
wxCAL_NO_YEAR_CHANGE:停用年份變更(已棄用,僅限通用)
wxCAL_NO_MONTH_CHANGE:停用月份(並隱含地停用年份)變更
wxCAL_SHOW_SURROUNDING_WEEKS:顯示上個月和下個月的相鄰週(僅限通用,對於原生控制項一律開啟)
wxCAL_SEQUENTIAL_MONTH_SELECTION:對於月份和年份選擇控制項,使用替代的、更精簡的樣式。(僅限通用)
wxCAL_SHOW_WEEK_NUMBERS:在日曆的左側顯示週數。(在通用中無效)
請參閱
此類別繼承自,且可以使用下列類別的函式:
wxWidgets 文件:wxCalendarCtrl
事件
此類別發出的事件類型
摘要
函式
建立控制項。
摧毀物件
應使用此函式,而不是直接變更 wxCAL_SHOW_HOLIDAYS
樣式位元。
應使用此函式,而不是變更 wxCAL_NO_MONTH_CHANGE
樣式位元。
已棄用
傳回指定日期的屬性(應該在 1...31 的範圍內)。
取得目前選取的日期。
取得日曆視窗標頭部分的背景顏色。
取得日曆視窗標頭部分的前景顏色。
取得背景反白顏色。
取得前景反白顏色。
傳回目前用於假日反白顯示的背景顏色。
傳回目前用於假日反白顯示的前景顏色。
傳回其中一個 wxCalendarHitTestResult 常數,並根據命中測試代碼以對應的值填入 date
或 wd
指標。
預設建構函式。
清除與指定日期相關聯的任何屬性(範圍為 1...31)。
將屬性與指定日期相關聯(範圍為 1...31)。
設定目前的日期。
設定用於在控制項頂部繪製星期的顏色。
設定用於反白顯示目前選取日期的顏色。
將指定日期標記為當月假日。
設定用於假日反白顯示的顏色。
類型
-type wxCalendarCtrl() :: wx:wx_object().
函式
-spec create(This, Parent, Id) -> boolean() when This :: wxCalendarCtrl(), Parent :: wxWindow:wxWindow(), Id :: integer().
-spec create(This, Parent, Id, [Option]) -> boolean() when This :: wxCalendarCtrl(), Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {date, wx:wx_datetime()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
建立控制項。
如需參數的意義和可能的樣式控制項概觀,請參閱 wxWindow:new/3
。
-spec destroy(This :: wxCalendarCtrl()) -> ok.
摧毀物件
-spec enableHolidayDisplay(This) -> ok when This :: wxCalendarCtrl().
-spec enableHolidayDisplay(This, [Option]) -> ok when This :: wxCalendarCtrl(), Option :: {display, boolean()}.
應使用此函式,而不是直接變更 wxCAL_SHOW_HOLIDAYS
樣式位元。
它啟用或停用假日的特殊反白顯示。
-spec enableMonthChange(This) -> boolean() when This :: wxCalendarCtrl().
-spec enableMonthChange(This, [Option]) -> boolean() when This :: wxCalendarCtrl(), Option :: {enable, boolean()}.
應使用此函式,而不是變更 wxCAL_NO_MONTH_CHANGE
樣式位元。
它允許或禁止使用者以互動方式變更月份。請注意,如果無法變更月份,則也無法變更年份。
傳回值:如果此選項的值確實變更,則傳回 true,如果已設定為要求的值,則傳回 false。
-spec enableYearChange(This) -> ok when This :: wxCalendarCtrl().
-spec enableYearChange(This, [Option]) -> ok when This :: wxCalendarCtrl(), Option :: {enable, boolean()}.
已棄用
應使用此函式,而不是直接變更 wxCAL_NO_YEAR_CHANGE
樣式位元。它允許或禁止使用者以互動方式變更年份。僅限於通用 wxCalendarCtrl
。
-spec getAttr(This, Day) -> wxCalendarDateAttr:wxCalendarDateAttr() when This :: wxCalendarCtrl(), Day :: integer().
傳回指定日期的屬性(應該在 1...31 的範圍內)。
傳回的指標可能是 NULL。僅限於通用 wxCalendarCtrl
。
-spec getDate(This) -> wx:wx_datetime() when This :: wxCalendarCtrl().
取得目前選取的日期。
-spec getHeaderColourBg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().
取得日曆視窗標頭部分的背景顏色。
此方法目前僅在通用 wxCalendarCtrl
中實作,且在原生版本中一律傳回 wxNullColour
。
-spec getHeaderColourFg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().
取得日曆視窗標頭部分的前景顏色。
此方法目前僅在通用 wxCalendarCtrl
中實作,且在原生版本中一律傳回 wxNullColour
。
-spec getHighlightColourBg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().
取得背景反白顏色。
僅限於通用 wxCalendarCtrl
。
此方法目前僅在通用 wxCalendarCtrl
中實作,且在原生版本中一律傳回 wxNullColour
。
-spec getHighlightColourFg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().
取得前景反白顏色。
僅限於通用 wxCalendarCtrl
。
此方法目前僅在通用 wxCalendarCtrl
中實作,且在原生版本中一律傳回 wxNullColour
。
-spec getHolidayColourBg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().
傳回目前用於假日反白顯示的背景顏色。
僅適用於通用 wxCalendarCtrl
,因為原生版本目前完全不支援假日顯示,且一律傳回 wxNullColour
。
-spec getHolidayColourFg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().
傳回目前用於假日反白顯示的前景顏色。
僅適用於通用 wxCalendarCtrl
,因為原生版本目前完全不支援假日顯示,且一律傳回 wxNullColour
。
-spec hitTest(This, Pos) -> Result when Result :: {Res :: wx:wx_enum(), Date :: wx:wx_datetime(), Wd :: wx:wx_enum()}, This :: wxCalendarCtrl(), Pos :: {X :: integer(), Y :: integer()}.
傳回其中一個 wxCalendarHitTestResult 常數,並根據命中測試代碼以對應的值填入 date
或 wd
指標。
目前在 wxGTK 中未實作。
-spec new() -> wxCalendarCtrl().
預設建構函式。
-spec new(Parent, Id) -> wxCalendarCtrl() when Parent :: wxWindow:wxWindow(), Id :: integer().
等同於 new(Parent, Id, [])
。
-spec new(Parent, Id, [Option]) -> wxCalendarCtrl() when Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {date, wx:wx_datetime()} | {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()}.
與 create/4
方法相同。
-spec resetAttr(This, Day) -> ok when This :: wxCalendarCtrl(), Day :: integer().
清除與指定日期相關聯的任何屬性(範圍為 1...31)。
僅限於通用 wxCalendarCtrl
。
-spec setAttr(This, Day, Attr) -> ok when This :: wxCalendarCtrl(), Day :: integer(), Attr :: wxCalendarDateAttr:wxCalendarDateAttr().
將屬性與指定日期相關聯(範圍為 1...31)。
如果指標為 NULL,則會清除項目的屬性。僅限於通用 wxCalendarCtrl
。
-spec setDate(This, Date) -> boolean() when This :: wxCalendarCtrl(), Date :: wx:wx_datetime().
設定目前的日期。
date
參數必須有效,且在 SetDateRange()
設定的目前有效範圍內(在 wx 中未實作),否則不會變更目前日期,並且函式會傳回 false,此外,如果日期無效,則會觸發判斷提示失敗。
-spec setHeaderColours(This, ColFg, ColBg) -> ok when This :: wxCalendarCtrl(), ColFg :: wx:wx_colour(), ColBg :: wx:wx_colour().
設定用於在控制項頂部繪製星期的顏色。
此方法目前僅在通用 wxCalendarCtrl
中實作,且在原生版本中不會執行任何動作。
-spec setHighlightColours(This, ColFg, ColBg) -> ok when This :: wxCalendarCtrl(), ColFg :: wx:wx_colour(), ColBg :: wx:wx_colour().
設定用於反白顯示目前選取日期的顏色。
此方法目前僅在通用 wxCalendarCtrl
中實作,且在原生版本中不會執行任何動作。
-spec setHoliday(This, Day) -> ok when This :: wxCalendarCtrl(), Day :: integer().
將指定日期標記為當月假日。
此方法僅在控制項的通用版本中實作,且在原生版本中不會執行任何動作。
-spec setHolidayColours(This, ColFg, ColBg) -> ok when This :: wxCalendarCtrl(), ColFg :: wx:wx_colour(), ColBg :: wx:wx_colour().
設定用於假日反白顯示的顏色。
此方法僅在控制項的通用版本中實作,且在原生版本中不會執行任何動作。它也應該僅在視窗樣式包含 wxCAL_SHOW_HOLIDAYS
旗標或已呼叫 enableHolidayDisplay/2
時呼叫。