YStudio Y++

日期选择器(datepicker)

Y++ / YStudio 开发文档 · 一点滴

选择器: datepicker · 设计器组件: 日期选择器 · 按名称: datepicker#名称 或 #名称

硬约束与叠画

  1. 控件名来自窗口 XML「名称」;属性赋值无括号(如 标题 = "确定"),方法调用必须带括号(如 刷新())。
  2. 事件写 函数 控件名.事件名(参数…),形参类型以本页事件表为准。
  3. 任意控件客户区叠画用支持库 绘制类:绘制类 g → g.绑组件(本控件名)(组件名无引号)。画布场景编辑见 画布控件。
  4. 字体对象见绘制文档中的字体类;置字体(字体类) 将字体应用到本控件。
  5. 不要虚构未列出的方法;YSS 键见下文与 YSS.md。

属性

设计器属性面板与代码侧可读可写属性(来源:组件类库)。

属性 类型 读写 说明
提示 文本 读写 鼠标悬停时的提示文字
鼠标指针 文本 读写 空=默认;可用 arrow/hand/ibeam/cross/wait/no/sizeall 等预设,或.cur/.ani 路径(如 资源/press.cur)
左边 小数 读写 相对窗体左边的位置(像素)
顶边 小数 读写 相对窗体顶边的位置(像素)
宽度 小数 读写 控件宽度(像素)
高度 小数 读写 控件高度(像素)
停靠 整数 读写 0无 1上 2下 3左 4右 5填充;菜单/工具/状态栏仍用专用吸附
可见 逻辑 读写 真=显示,假=隐藏
启用 逻辑 读写 真=可用,假=禁用
句柄 长整数 只读 组件逻辑句柄(1 起,供动画类等绑定;非 HWND);只读
当前日期 文本 读写 规范存 YYYY-MM-DD[ HH:mm:ss];空=未选
日期 文本 读写 同「当前日期」
日期时间 文本 读写 同「当前日期」
格式 文本 读写 显示格式,可含时分秒(yyyy-MM-dd HH:mm:ss)
占位 文本 读写 无日期时显示
占位文本 文本 读写 同「占位」
可编辑 逻辑 读写 真=允许键盘输入
最小 文本 读写 范围下限
最大 文本 读写 范围上限
最小日期 文本 读写 同「最小」
最大日期 文本 读写 同「最大」
周次 逻辑 读写 真=弹层显示周次
农历 逻辑 读写 真=弹层显示农历
节日 逻辑 读写 真=弹层显示节日
起始年 整数 读写 年下拉起始年(1-9999);农历有效范围仍为 1900-2100
结束年 整数 读写 年下拉结束年(1-9999);默认当前年;农历有效范围仍为 1900-2100
圆角 整数 读写 像素,0=直角
显示边框 逻辑 读写 真=显示边框
边框大小 整数 读写 像素
边框颜色 文本 读写 如 #RRGGBB
文字色 文本 读写 如 #RRGGBB
背景色 文本 读写 如 #1E1E1E

方法

组件类库方法(调用必须带括号)。下表为带类型签名。

方法 签名 返回 说明
置日期 无 置日期(文本 日期) 无 YYYY-MM-DD 或带时分秒;也可属性
取日期 文本 取日期() 文本 空=未选
清空 无 清空() 无
打开面板 无 打开面板() 无 展开月历
关闭面板 无 关闭面板() 无
置今天 无 置今天() 无
面板是否打开 逻辑 面板是否打开() 逻辑
取年 整数 取年() 整数 未选=0
取月 整数 取月() 整数 1–12
取日 整数 取日() 整数
取时 整数 取时() 整数 0–23
取分 整数 取分() 整数
取秒 整数 取秒() 整数
置格式 无 置格式(整数 格式码) 无 同基础库日期格式码;0=默认
取格式 整数 取格式() 整数 0–13
移动 无 移动(小数 左边, 小数 顶边, [小数 宽度], [小数 高度]) 无 可选同时改宽高
置焦点 无 置焦点() 无
刷新 无 刷新() 无 立即重绘所在窗口
显示 / 隐藏 无 显示() / 无 隐藏() 无 等同 可见 = 真/假
置字体 逻辑 置字体(字体类 字体) 逻辑 见 painter.md
日期选择器1.置日期("2026-09-04")
输出(日期选择器1.取年())

事件

在代码中写 函数 控件名.事件名(...) 处理。

事件 参数 说明
单击 整数 X, 整数 Y 鼠标左键单击控件。
双击 整数 X, 整数 Y 鼠标左键双击控件。
右键单击 整数 X, 整数 Y 鼠标右键单击控件。
鼠标按下 整数 X, 整数 Y, 逻辑 按下 鼠标键在控件上按下。按下=真表示当前仍按住。
鼠标抬起 整数 X, 整数 Y, 逻辑 按下 鼠标键在控件上放开。
鼠标移动 整数 X, 整数 Y, 逻辑 按下 鼠标在控件上移动。按下表示左键是否按住。
鼠标进入 整数 X, 整数 Y 鼠标指针进入控件区域。
鼠标离开 整数 X, 整数 Y 鼠标指针离开控件区域。
鼠标左键单击 整数 X, 整数 Y 鼠标左键单击(与「单击」同时触发)。
鼠标左键双击 整数 X, 整数 Y 鼠标左键双击(与「双击」同时触发)。
鼠标中间单击 整数 X, 整数 Y 鼠标中键单击控件。
鼠标齿轮滚动 整数 X, 整数 Y, 逻辑 向上 在控件上滚动鼠标滚轮。向上=真表示向上滚。
鼠标右键单击 整数 X, 整数 Y 鼠标右键单击(与「右键单击」同时触发)。
鼠标右键双击 整数 X, 整数 Y 鼠标右键双击控件。
日期改变 文本 当前文本 当前日期发生变化时触发(选日/选时或置日期)。参数:文本 日期(YYYY-MM-DD 或带时分秒)。
即将打开面板 无 月历弹层即将展开时触发。
面板打开 无 月历弹层已展开后触发。
即将关闭面板 无 月历弹层即将收起时触发。
面板关闭 无 月历弹层已收起后触发。
函数 日期选择器1.单击 (整数 X, 整数 Y) {
    // …
}

YSS 样式

以下为样式表(.yss)键与示例;写样式前请先读窗体 XML 取控件 名称 与 typeId,见 window-xml.md。

布局与子选择器

形态为紧凑输入框 + 右侧箭头;点击展开月历弹层。日期值统一为 YYYY-MM-DD,格式含时分秒时为 YYYY-MM-DD HH:mm:ss。弹层贴边时会自动上翻或夹入可视区,避免被窗口裁切。

属性说明(逐键)

伪状态: :hover · :focus · :disabled · 子选择器 datepicker:popup

外壳与字体

属性 作用 取值 / 范围 说明与注意
color 输入区文字色 颜色,如 #E0E0E0
background-color / background 输入区底色 颜色
border-color / border-width / border-radius / show-border 外框描边 同按钮
font-size / font-family / font-bold / font-italic 字体 同标签
drop-down-button-background-color 右侧箭头钮背景 颜色 别名 arrow-background-color;与弹层底色独立
drop-down-button-hover-background-color 箭头钮悬停背景 颜色 别名 arrow-hover-background-color
drop-down-arrow-color 箭头三角形色 颜色 别名 arrow-color;亦可 datepicker:drop-down { color }

值 · 格式 · 占位

属性 作用 取值 / 范围 说明与注意
date / value / datetime 当前日期(时间) "2026-09-04" 或 "2026-09-04 18:30:00" 统一 YYYY-MM-DD;含时分秒同上
format 显示格式 可含 yyyy-MM-dd、HH:mm:ss 是否显示时分秒由此决定
placeholder 无值占位文案 如 "请选择日期"
placeholder-color 占位字色 颜色
editable 允许键盘输入 true/false 假=仅弹层选择
min-date / min 可选最小日 空=不限,如 "2020-01-01"
max-date / max 可选最大日 空=不限

弹层开关与年范围

属性 作用 取值 / 范围 说明与注意
show-week / week 显示周次列 true/false
show-lunar / lunar 显示农历 true/false
show-holiday / holiday 显示节日标注 true/false
year-start / start-year 年下拉起始 如 1990,夹入 1900–2100 万年历有效区间同此
year-end / end-year 年下拉结束 如 2035,夹入 1900–2100

伪态 · 弹层主题

属性 作用 说明与注意
hover-background-color / hover-color 外壳悬停底/字 亦可 :hover { … }
focus-border-color / focus-background-color / focus-glow-color 焦点边框/底/光晕 亦可 :focus { … }
disabled-color / disabled-background-color 禁用字/底
popup-background / datepicker:popup { background-color } 弹层卡片底色 映射 backColor2
popup-border-radius 弹层圆角 映射 sliceL;0 时主题默认约 12
shadow-* / box-shadow 弹层软阴影 未设时主题弹层有默认阴影
selected-day-background / accent 选中日主题色格
selected-day-color 选中日字色
weekend-color 周末/节日倾向红字
other-month-color 邻月淡化色 弹层会绘邻月格
day-hover-background 日格悬停底

弹层操作

  • << / >>:上一年 / 下一年
  • < / >:上一月 / 下一月
  • 中间年标题:打开年份下拉
  • 重置:清空并关闭;此刻:选中今天并关闭(含时分秒若格式含时间)
  • 含时间格式时右侧为「确定」,另有时分秒调节

使用示例

日期时间 + 农历节日:

datepicker#日期选择器1 {
    color: #E0E0E0;
    background-color: #2D2D30;
    border-color: #5A5A5A;
    border-radius: 4;
    show-border: true;
    font-size: 13;
    format: yyyy-MM-dd HH:mm:ss;
    placeholder: "请选择日期时间";
    placeholder-color: #888888;
    editable: true;
    show-week: true;
    show-lunar: true;
    show-holiday: true;
    year-start: 1990;
    year-end: 2035;
    drop-down-button-background-color: #3A3A40;
    drop-down-button-hover-background-color: #4A4A50;
    drop-down-arrow-color: #CCCCCC;
}

仅日期、限定范围:

datepicker#生日 {
    format: yyyy-MM-dd;
    min-date: "1900-01-01";
    max-date: "2100-12-31";
    editable: false;
    show-lunar: true;
}

白卡主题弹层(--accent 可换绿/粉):

:root { --accent: #00C853; }

datepicker#主题日 {
    format: yyyy-MM-dd;
    show-lunar: true;
    show-holiday: true;
    popup-background: #FFFFFF;
    popup-border-radius: 12;
    accent: var(--accent);
    selected-day-color: #FFFFFF;
    weekend-color: #E53935;
    other-month-color: #BDBDBD;
    day-hover-background: #E8F5E9;
    shadow-blur: 18;
    shadow-offset-y: 6;
}

完整示例

datepicker#日期选择器1 {
    color: #E0E0E0;
    background-color: #2D2D30;
    border-color: #5A5A5A;
    border-width: 1;
    border-radius: 4;
    show-border: true;
    font-size: 13;
    date: "2026-09-04";
    format: yyyy-MM-dd HH:mm:ss;
    placeholder: "请选择日期时间";
    placeholder-color: #888888;
    editable: true;
    min-date: "1990-01-01";
    max-date: "2035-12-31";
    show-week: true;
    show-lunar: true;
    show-holiday: true;
    year-start: 1990;
    year-end: 2035;
}

datepicker#日期选择器1:focus {
    focus-border-color: #007ACC;
    focus-glow-color: #007ACC;
}