查看源代码 wxCalendarCtrl (wx v2.4.3)
日历控件允许用户选择日期。
用户可以使用键盘移动当前选定的日期,并通过按 <Return>
键或双击来选择日期(生成 EVT_CALENDAR
事件)。
通用日历具有更高级的显示自定义功能,如下所述。如果希望在每个平台上使用这些功能,请使用 wxGenericCalendarCtrl 而不是 wxCalendarCtrl
。
所有全局设置(如使用的颜色和字体)当然可以更改。此外,还可以使用 wxCalendarDateAttr
类独立设置月份中每天的显示样式。
没有自定义属性的项目将使用默认颜色和字体绘制,并且没有边框,但是使用 setAttr/3
设置自定义属性可以修改其外观。只需创建一个自定义属性对象,并为要特殊显示的日期设置它(请注意,控件将拥有该指针的所有权,即它将自行删除该指针)。即使 wx_datetime()
未将其识别为假日,也可以使用 wxCalendarDateAttr:setHoliday/2
方法将某天标记为假日。
由于属性是为每一天指定的,它们可能会在月份更改时发生变化,因此通常需要在 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
时才应调用此方法。