檢視原始碼 wxCalendarCtrl (wx v2.4.3)

日曆控制項允許使用者選擇日期。

使用者可以使用鍵盤移動目前的選擇,並按下 <Return> 鍵或雙擊來選擇日期(產生 EVT_CALENDAR 事件)。

通用日曆對於其顯示的客製化具有進階的可能性,如下所述。如果您想在每個平台上使用這些可能性,請使用 wxGenericCalendarCtrl 而不是 wxCalendarCtrl

所有全域設定(例如使用的顏色和字型)當然可以變更。此外,可以使用 wxCalendarDateAttr 類別來獨立設定每個月中每一天的顯示樣式。

沒有自訂屬性的項目會以預設的顏色和字型繪製,且沒有邊框,但使用 setAttr/3 設定自訂屬性可以修改其外觀。只要建立自訂屬性物件,並為您想要特殊顯示的日期設定它即可(請注意,控制項將取得指標的所有權,也就是說,它會自行刪除它)。可以使用 wxCalendarDateAttr:setHoliday/2 方法將某一天標記為假日,即使該假日不被 wx_datetime() 識別。

由於屬性是為每一天指定的,因此當月份變更時,它們可能會變更,因此您通常會在 EVT_CALENDAR_PAGE_CHANGED 事件處理常式中更新它們。

如果未給定 wxCAL_SUNDAY_FIRSTwxCAL_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 常數,並根據命中測試代碼以對應的值填入 datewd 指標。

預設建構函式。

create/4 方法相同。

清除與指定日期相關聯的任何屬性(範圍為 1...31)。

將屬性與指定日期相關聯(範圍為 1...31)。

設定目前的日期。

設定用於在控制項頂部繪製星期的顏色。

設定用於反白顯示目前選取日期的顏色。

將指定日期標記為當月假日。

設定用於假日反白顯示的顏色。

類型

-type wxCalendarCtrl() :: wx:wx_object().

函式

此函式的連結

create(This, Parent, Id)

檢視原始碼
-spec create(This, Parent, Id) -> boolean()
                when This :: wxCalendarCtrl(), Parent :: wxWindow:wxWindow(), Id :: integer().

等同於 create(This, Parent, Id, [])

-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.

摧毀物件

此函式的連結

enableHolidayDisplay(This)

檢視原始碼
-spec enableHolidayDisplay(This) -> ok when This :: wxCalendarCtrl().

等同於 enableHolidayDisplay(This, [])

此函式的連結

enableHolidayDisplay/2

檢視原始碼
-spec enableHolidayDisplay(This, [Option]) -> ok
                              when This :: wxCalendarCtrl(), Option :: {display, boolean()}.

應使用此函式,而不是直接變更 wxCAL_SHOW_HOLIDAYS 樣式位元。

它啟用或停用假日的特殊反白顯示。

此函式的連結

enableMonthChange(This)

檢視原始碼
-spec enableMonthChange(This) -> boolean() when This :: wxCalendarCtrl().

等同於 enableMonthChange(This, [])

-spec enableMonthChange(This, [Option]) -> boolean()
                           when This :: wxCalendarCtrl(), Option :: {enable, boolean()}.

應使用此函式,而不是變更 wxCAL_NO_MONTH_CHANGE 樣式位元。

它允許或禁止使用者以互動方式變更月份。請注意,如果無法變更月份,則也無法變更年份。

傳回值:如果此選項的值確實變更,則傳回 true,如果已設定為要求的值,則傳回 false。

此函式的連結

enableYearChange(This)

檢視原始碼
此函式已棄用。wxCalendarCtrl:enableYearChange/1 已棄用;在 wxWidgets-2.9 及更新版本中不可用。
-spec enableYearChange(This) -> ok when This :: wxCalendarCtrl().

等同於 enableYearChange(This, [])

此函式已棄用。wxCalendarCtrl:enableYearChange/2 已棄用;在 wxWidgets-2.9 及更新版本中不可用。
-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().

取得目前選取的日期。

此函式的連結

getHeaderColourBg(This)

檢視原始碼
-spec getHeaderColourBg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().

取得日曆視窗標頭部分的背景顏色。

此方法目前僅在通用 wxCalendarCtrl 中實作,且在原生版本中一律傳回 wxNullColour

請參閱:setHeaderColours/3

此函式的連結

getHeaderColourFg(This)

檢視原始碼
-spec getHeaderColourFg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().

取得日曆視窗標頭部分的前景顏色。

此方法目前僅在通用 wxCalendarCtrl 中實作,且在原生版本中一律傳回 wxNullColour

請參閱:setHeaderColours/3

此函式的連結

getHighlightColourBg(This)

檢視原始碼
-spec getHighlightColourBg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().

取得背景反白顏色。

僅限於通用 wxCalendarCtrl

此方法目前僅在通用 wxCalendarCtrl 中實作,且在原生版本中一律傳回 wxNullColour

請參閱:setHighlightColours/3

此函式的連結

getHighlightColourFg(This)

檢視原始碼
-spec getHighlightColourFg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().

取得前景反白顏色。

僅限於通用 wxCalendarCtrl

此方法目前僅在通用 wxCalendarCtrl 中實作,且在原生版本中一律傳回 wxNullColour

請參閱:setHighlightColours/3

此函式的連結

getHolidayColourBg(This)

檢視原始碼
-spec getHolidayColourBg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().

傳回目前用於假日反白顯示的背景顏色。

僅適用於通用 wxCalendarCtrl,因為原生版本目前完全不支援假日顯示,且一律傳回 wxNullColour

請參閱:setHolidayColours/3

此函式的連結

getHolidayColourFg(This)

檢視原始碼
-spec getHolidayColourFg(This) -> wx:wx_colour4() when This :: wxCalendarCtrl().

傳回目前用於假日反白顯示的前景顏色。

僅適用於通用 wxCalendarCtrl,因為原生版本目前完全不支援假日顯示,且一律傳回 wxNullColour

請參閱:setHolidayColours/3

-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 常數,並根據命中測試代碼以對應的值填入 datewd 指標。

目前在 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

此函式的連結

setAttr(This, Day, Attr)

檢視原始碼
-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,此外,如果日期無效,則會觸發判斷提示失敗。

此函式的連結

setHeaderColours(This, ColFg, ColBg)

檢視原始碼
-spec setHeaderColours(This, ColFg, ColBg) -> ok
                          when
                              This :: wxCalendarCtrl(), ColFg :: wx:wx_colour(), ColBg :: wx:wx_colour().

設定用於在控制項頂部繪製星期的顏色。

此方法目前僅在通用 wxCalendarCtrl 中實作,且在原生版本中不會執行任何動作。

此函式的連結

setHighlightColours(This, ColFg, ColBg)

檢視原始碼
-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().

將指定日期標記為當月假日。

此方法僅在控制項的通用版本中實作,且在原生版本中不會執行任何動作。

此函式的連結

setHolidayColours(This, ColFg, ColBg)

檢視原始碼
-spec setHolidayColours(This, ColFg, ColBg) -> ok
                           when
                               This :: wxCalendarCtrl(),
                               ColFg :: wx:wx_colour(),
                               ColBg :: wx:wx_colour().

設定用於假日反白顯示的顏色。

此方法僅在控制項的通用版本中實作,且在原生版本中不會執行任何動作。它也應該僅在視窗樣式包含 wxCAL_SHOW_HOLIDAYS 旗標或已呼叫 enableHolidayDisplay/2 時呼叫。