查看源代码 wxCalendarCtrl (wx v2.4.3)

日历控件允许用户选择日期。

用户可以使用键盘移动当前选定的日期,并通过按 <Return> 键或双击来选择日期(生成 EVT_CALENDAR 事件)。

通用日历具有更高级的显示自定义功能,如下所述。如果希望在每个平台上使用这些功能,请使用 wxGenericCalendarCtrl 而不是 wxCalendarCtrl

所有全局设置(如使用的颜色和字体)当然可以更改。此外,还可以使用 wxCalendarDateAttr 类独立设置月份中每天的显示样式。

没有自定义属性的项目将使用默认颜色和字体绘制,并且没有边框,但是使用 setAttr/3 设置自定义属性可以修改其外观。只需创建一个自定义属性对象,并为要特殊显示的日期设置它(请注意,控件将拥有该指针的所有权,即它将自行删除该指针)。即使 wx_datetime() 未将其识别为假日,也可以使用 wxCalendarDateAttr:setHoliday/2 方法将某天标记为假日。

由于属性是为每一天指定的,它们可能会在月份更改时发生变化,因此通常需要在 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 时才应调用此方法。