Skip to content

DTPicker 类 ​

DTPicker 是一个日期/时间选择器控件。内联字段按 Format 显示当前日期或时间;点击下拉箭头打开 MonthView 风格的日历以选取新日期,关闭日历后更新 Value。

vb
Private Sub Form_Load()
    DTPicker1.Format = dtpShortDate
    DTPicker1.MinDate = DateSerial(2020, 1, 1)
    DTPicker1.MaxDate = DateSerial(2030, 12, 31)
    DTPicker1.Value = Date
End Sub

Private Sub DTPicker1_Change()
    Debug.Print "User picked: " & DTPicker1.Value
End Sub

控件从 BaseControlFocusable 继承可聚焦矩形可停靠成员 --- 大小、位置、Anchors、Dock、Font、BackColor / ForeColor、Appearance、MousePointer / MouseIcon、ToolTipText、DragMode / DragIcon、Drag、Refresh、SetFocus、TabIndex / TabStop、ZOrder、CausesValidation、VisualStyles、hWnd、HelpContextID / WhatsThisHelpID。

格式和值 ​

Format 选择四种显示样式之一 --- 长日期、短日期、时间或通过 CustomFormat 提供的自定义格式字符串。内联值始终是 Date,但 Value 类型为 Variant,因为带 CheckBox 的选择器可能没有赋值日期(用户可清除复选框),此时 Value 读取为 Null。

便捷访问器 Year、Month、Week、Day、Hour、Minute 和 Second 将当前值分解为各个分量;对其中任何一个赋值会用更改后分量重写 Value。StartOfWeek 属性选择日历下拉和 Week 所使用的一周起始日。

自定义格式和回调事件 ​

当 Format 设为 dtpCustom 时,CustomFormat 字符串控制显示。格式语法遵循Win32 GetDateFormat / GetTimeFormat 图片字符串(如 "dddd, MMMM dd, yyyy")。包含在回调标记中的标记(格式中的 X 字面量)触发 Format、FormatSize 和 CallbackKeyDown 事件,以便应用程序渲染自己的字段内容并响应其中的键盘导航。

日历外观 ​

当下拉日历显示时,CalendarBackColor、CalendarForeColor、CalendarTitleBackColor、CalendarTitleForeColor 和 CalendarTrailingForeColor 属性通过 DTM_SETMCCOLOR 控制日历颜色。CalendarShowToday、CalendarShowTodayCircle、CalendarShowWeekNumbers 和 CalendarShowTrailingDates 布尔值切换嵌入日历上对应的 MCS_… 样式标志。

hWndCalendar 返回下拉日历窗口的Win32句柄 --- 用于高级自定义。仅在 DropDown 和 CloseUp 事件之间有效。

属性 ​

CalendarBackColor ​

日历下拉的背景颜色。OLE_COLOR。默认:vbWindowBackground。通过 DTM_SETMCCOLOR / MCSC_MONTHBK 应用于嵌入的月历。

CalendarForeColor ​

日历下拉的文本颜色。OLE_COLOR。默认:vbButtonText。

CalendarShowToday ​

日历下拉是否在底部显示"Today: …"字符串。Boolean。默认:True。

CalendarShowTodayCircle ​

日历下拉是否用圆圈高亮今日日期。Boolean。默认:True。

CalendarShowTrailingDates ​

日历下拉是否显示上月末和下月初的前导和尾随日期。Boolean。默认:True。

CalendarShowWeekNumbers ​

日历下拉是否在左侧显示周数列。Boolean。默认:False。

CalendarTitleBackColor ​

日历下拉的标题栏背景颜色。OLE_COLOR。默认:vb3DFace。

CalendarTitleForeColor ​

日历下拉的标题栏文本颜色。OLE_COLOR。默认:vbButtonText。

CalendarTrailingForeColor ​

当 CalendarShowTrailingDates 为 True 时用于相邻月份尾随日期的文本颜色。OLE_COLOR。默认:vbGrayText。

CheckBox ​

选择器是否在日期值旁包含复选框。Boolean。默认:False。为 True 时,用户可清除复选框使选择器无值,此时 Value 返回 Null。当 CheckBox 为 False 时对 Value 赋值 Null 引发运行时错误 35787("Can't set Value to NULL when CheckBox property = FALSE")。

运行时更改此属性会重新创建底层Win32窗口 --- 该属性无法仅通过 GWL_STYLE 切换。

CustomFormat ​

当 Format 为 dtpCustom 时使用的图片字符串。String。默认:空。遵循Win32 GetDateFormat 语法(如 "dddd, MMMM dd, yyyy"、"hh:mm:ss tt")。

Day ​

Value 的月中第几天分量。Integer(1--31)。读取返回当前天;赋值以新天重写日期,超出当月范围时引发运行时错误 380。参见 DayCount。

DayCount ​

当前值所在月份的天数。Long,只读。从 Year 和 Month 计算。用于在赋值 Day 之前进行边界检查。

DayOfWeek ​

当前 Value 是星期几,作为 VbDayOfWeek 的成员(vbSunday 到 vbSaturday)。只读。

Format ​

显示格式。DTPickerFormatConstants 的成员:dtpLongDate、dtpShortDate、dtpTime、dtpCustom。默认:dtpShortDate。

Hour ​

Value 的小时分量,24小时制。Integer(1--23 --- 注意设置器拒绝 0 并引发运行时错误 380;读取返回实时值)。读取不受限制。

hWndCalendar ​

下拉日历窗口的Win32句柄。HWND,只读。仅在 DropDown 和 CloseUp 事件之间有效;日历关闭时读取为 0。

MaxDate ​

可导航日期范围的上限。Date。默认:9999-12-31。赋值低于 MinDate 时引发运行时错误 35775。如果当前 Value 超过新的 MaxDate,Value 被钳位到 MaxDate。

MinDate ​

可导航日期范围的下限。Date。默认:1601-01-01。赋值高于 MaxDate 时引发运行时错误 35775。如果当前 Value 低于新的 MinDate,Value 被钳位到 MinDate。

Minute ​

Value 的分钟分量。Integer(赋值时 1--59;读取时 0--59)。

Month ​

Value 的月份分量。Integer(1--12)。赋值超出范围时引发运行时错误 380。

RightToLeft ​

INFO

RightToLeft 标记为 [Unimplemented],没有任何效果;读写该属性可编译,但底层Win32控件的RTL模式不会被切换。

一个 Boolean。

Second ​

Value 的秒分量。Integer(赋值时 1--59;读取时 0--59)。

StartOfWeek ​

日历下拉中哪一天渲染为最左列。VbDayOfWeek 的成员。默认为系统的一周起始日设置(通过 vbUseSystemDayOfWeek 解析)。

UpDown ​

选择器是否使用微调按钮部件代替下拉日历。Boolean。默认:False。为 True 时,用户通过点击每个字段旁的上/下箭头调整日期;日历下拉被抑制。

运行时更改此属性会重新创建底层Win32窗口。

Value ​

选定的日期/时间。Variant。默认成员。

当复选框选中(或 CheckBox 为 False)时读取为 Date,复选框清除时读取为 Null。当 CheckBox 为 False 时赋值 Null 引发运行时错误 35787。赋值超出 [MinDate, MaxDate] 的日期引发运行时错误 35773。

赋值数值(非 Date)类型时隐式通过 CDate 转换。赋值 Empty 等同于赋值 Null。更改 Value 在控件完成初始化阶段后触发 Change。

Week ​

当前 Value 的ISO风格年周数。Integer(1--53)。设置器应用 DateAdd("ww", …) 的差值,因此更改 Week 会保留周内的星期几。赋值超出范围时引发运行时错误 380。计算周边界时遵循 StartOfWeek。

Year ​

Value 的年份分量。Integer。

事件 ​

CallbackKeyDown ​

当自定义回调字段获得焦点时用户按下键触发。让应用程序解释按键(例如上/下箭头循环枚举值)并重写日期。

语法:object_CallbackKeyDown(ByVal KeyCode As Integer,ByVal Shift As Integer,ByVal CallbackField As String,CallbackDate As Date)

KeyCode
一个 KeyCodeConstants 值,标识按下的键。
Shift
ShiftConstants 值的位掩码。
CallbackField
标识聚焦的回调字段的图片字符串标记。
CallbackDate
输入/输出 --- 应用程序可在事件返回前修改的当前值。

Change ​

当 Value 已更改时触发,无论通过用户交互还是代码。在窗体加载的初始属性反序列化期间不触发。

语法:object_Change( )

Click ​

在控件矩形内鼠标点击时触发。

语法:object_Click( )

CloseUp ​

当下拉日历关闭时触发 --- 无论用户选取日期、点击日历外部还是按 Esc。

语法:object_CloseUp( )

DblClick ​

在控件矩形内双击时触发。

语法:object_DblClick( )

DragDrop ​

继承的拖放事件。参见 DragMode。

DragOver ​

继承的拖放事件。

当下拉日历打开时触发。处理程序可使用 hWndCalendar 自定义下拉的日历窗口。

语法:object_DropDown( )

Format ​

当 Format 为 dtpCustom 且 CustomFormat 字符串包含回调标记时,为每个需要渲染的自定义回调字段触发。

语法:object_Format(ByVal CallbackField As String,FormattedString As String)

CallbackField
标识正在渲染的回调字段的图片字符串标记。
FormattedString
输出 --- 应用程序将其设为选择器应在字段中显示的文本。

FormatSize ​

在 Format 之前触发,询问为回调字段保留多少字符单元格。选择器使用当前 Font 测量渲染宽度。

语法:object_FormatSize(ByVal CallbackField As String,Size As Integer)

CallbackField
标识回调字段的图片字符串标记。
Size
输出 --- 应用程序将其设为预期字符数。

GotFocus ​

继承的焦点事件。

Initialize ​

控件窗口创建并从持久化状态初始化属性后触发。每次窗体加载触发一次。

语法:object_Initialize( )

LostFocus ​

继承的焦点事件。

MouseDown ​

继承的鼠标事件。

语法:object_MouseDown(Button As Integer,Shift As Integer,X As Single,Y As Single)

MouseMove ​

继承的鼠标事件。

MouseUp ​

继承的鼠标事件。

OLECompleteDrag, OLEDragDrop, OLEDragOver, OLEGiveFeedback, OLESetData, OLEStartDrag ​

继承的OLE拖放事件。参见 OLEDropConstants 获取 OLEDropMode 值。

Validate ​

继承的验证事件。将 Cancel 设为 True 以将焦点保留在控件上。

语法:object_Validate(Cancel As Boolean)

另见 ​

twinBASIC及其LOGO版权为作者"韦恩"所有