YStudio Y++

数值微调框(spinbox)

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

选择器: spinbox · 设计器组件: 数值微调框 · 按名称: spinbox#名称 或 #名称
支持库: 组件类库 → 数值微调框类 · 补全: szwtk / spinbox / wtk

硬约束与叠画

  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);只读
值 小数 读写 当前数值(受小数位数控制,可负)
当前值 小数 读写 同「值」
最小值 小数 读写 下限(可负)
最大值 小数 读写 上限
步长 小数 读写 每次增减的步进(如 0.01)
小数位数 整数 读写 0-6,0=整数;内部按定点数存储
前缀 文本 读写 数值前显示文本,如 ¥
后缀 文本 读写 数值后显示文本,如 元
特殊值文本 文本 读写 值为最小值且未编辑时显示该文本
循环 逻辑 读写 真=到最大/最小后继续步进会绕回
千分位 逻辑 读写 真=非编辑态显示千分位分隔(如 1,234.56)
显示格式 整数 读写 0=默认(前缀+数值+后缀) 1=仅数值 2=前缀+数值 3=数值+后缀 4=前缀+数值+后缀 5=(前缀数值后缀)
圆角 整数 读写 像素,0=直角
显示边框 逻辑 读写 真=显示边框
边框大小 整数 读写 像素
边框颜色 文本 读写 如 #RRGGBB
描边样式 整数 读写 0=实线…4=双点划线
可编辑 逻辑 读写 真=允许在框内键入数值
文字色 文本 读写 如 #RRGGBB
背景色 文本 读写 如 #1E1E1E

方法

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

方法 签名 返回 说明
置值 无 置值(小数 数值) 无 与小数位数一致;也可属性 值 / 当前值
取值 小数 取值() 小数
置小数位数 无 置小数位数(整数 位数) 无 0–6
取小数位数 整数 取小数位数() 整数
置显示格式 无 置显示格式(整数 格式) 无 0–5
取显示格式 整数 取显示格式() 整数
置范围 无 置范围(小数 最小值, 小数 最大值) 无
取最小值 小数 取最小值() 小数
取最大值 小数 取最大值() 小数
置步长 无 置步长(小数 步长) 无
取步长 小数 取步长() 小数
置前缀 无 置前缀(文本 前缀) 无
取前缀 文本 取前缀() 文本
置后缀 无 置后缀(文本 后缀) 无
取后缀 文本 取后缀() 文本
移动 无 移动(小数 左边, 小数 顶边, [小数 宽度], [小数 高度]) 无 可选同时改宽高
置焦点 无 置焦点() 无
刷新 无 刷新() 无 立即重绘所在窗口
显示 / 隐藏 无 显示() / 无 隐藏() 无 等同 可见 = 真/假
置字体 逻辑 置字体(字体类 字体) 逻辑 见 painter.md
数值微调框1.置小数位数(2)
数值微调框1.置范围(0, 100)
数值微调框1.置值(12.5)

事件

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

事件 参数 说明
单击 整数 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 鼠标右键双击控件。
值改变 小数 当前值, 整数 来源 当前数值发生变化时触发(微调、滚轮、键入提交或程序置值);参数为小数与来源(0程序 1按钮 2滚轮 3键盘 4编辑提交)。
值将改变 小数 当前值, 整数 来源 数值即将改变时触发;参数为即将写入的小数与来源。事件内调用 取消() 可拦截本次改值。
编辑结束 小数 当前值, 整数 来源 可编辑时回车或失焦提交编辑后触发;参数为小数当前值与来源。
编辑开始 小数 当前值, 整数 来源 可编辑时进入键入(点选数值区或开始键入)时触发;参数为小数当前值与来源。
越界 小数 输入值, 整数 方向 键入提交时数值超出最小/最大:先触发本事件(输入值+方向),再夹紧并可能触发值改变。方向:-1 低于最小,1 高于最大。
函数 数值微调框1.单击 (整数 X, 整数 Y) {
    // …
}

YSS 样式

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

布局与子选择器

紧凑数值框:左侧显示当前数值(可带前缀/后缀/千分位/显示格式/特殊值文本),右侧 ▲/▼ 按步长增减。支持小数、负数、循环、滚轮与键盘上下键。

属性说明(逐键)

属性、置值/取值、事件参数一律按真实小数读写。

伪状态: :hover · :focus · :disabled

数值与范围

属性 作用 取值 / 范围 说明与注意
value / current-value 当前数值 小数,与 decimals 一致,如 1234.50 程序置值只钳 min…max,不吸附步长
min / minimum 最小值 小数
max / maximum 最大值 小数
step 步进 小数,如 0.01 / 1 ▲▼ / 滚轮 / ↑↓ 按此增减
decimals / decimal-places 小数位数 0–6;0=整数 改位数后值/min/max/step 按比例换算
prefix 前缀文案 如 "¥" 与 format 联动,见下
suffix 后缀文案 如 "元"
affix / prefix-suffix 前后缀简写 "前\|后";无 \| 只设前缀 旧属性仍可读
format / display-format 显示格式 整数 0–5(下表) 亦可写模板文本(尽量映射码)
editable 允许键入 true/false 假=仅 ▲▼ / 滚轮 / 方向键
wrapping / wrap 到端绕回 true/false
thousands / thousand-separator / group-thousands 千分位 true/false 仅非编辑态;编辑态纯数字
special-value-text / special-text / special 特殊值文案 如 "自动" 值为最小值且未编辑时显示

外壳与字体

属性 作用 取值 / 范围 说明与注意
color 数值文字色 #RRGGBB 等
background-color / background 底板色 颜色
border-color / border-width / border-radius / show-border 描边 同按钮
font-size / font-family / font-bold / font-italic 字体 同标签

伪态

属性 作用 说明与注意
hover-background-color / hover-color 悬停底/字 亦可 :hover { … }
focus-border-color / focus-background-color / focus-glow-color 焦点边框/底/光晕 亦可 :focus { … }
disabled-color / disabled-background-color 禁用字/底 亦可 :disabled { … }

显示格式(format / display-format)

码 含义
0 默认:前缀 + 数值 + 后缀
1 仅数值
2 前缀 + 数值
3 数值 + 后缀
4 前缀 + 数值 + 后缀(显式)
5 (前缀 + 数值 + 后缀)

属性面板为下拉框;代码侧写整数即可:数值微调框1.显示格式 = 1。

设置前缀/后缀时,若当前格式会隐藏它们(如 1=仅数值),会自动抬升到兼容码(有前缀→2,有后缀→3,两者都有→0),避免设置冲突。

使用示例

价格(两位小数 + 前缀):

spinbox#价格 {
    decimals: 2;
    value: 1234.50;
    min: 0;
    max: 999999.99;
    step: 0.01;
    prefix: "¥";
    format: 2;
    thousands: true;
    editable: true;
    wrapping: true;
    special-value-text: "自动";
}

整数数量:

spinbox#数量 {
    decimals: 0;
    value: 1;
    min: 1;
    max: 99;
    step: 1;
    suffix: "件";
    format: 3;
}

外壳配色:

spinbox#价格 {
    color: #E0E0E0;
    background-color: #2D2D30;
    border-color: #5A5A5A;
    border-radius: 4;
    show-border: true;
    font-size: 13;
}

完整示例

spinbox#价格 {
    color: #E0E0E0;
    background-color: #2D2D30;
    border-color: #5A5A5A;
    border-width: 1;
    border-radius: 4;
    show-border: true;
    font-size: 13;
    decimals: 2;
    value: 1234.50;
    min: 0;
    max: 999999.99;
    step: 0.01;
    prefix: "¥";
    suffix: "";
    special-value-text: "自动";
    wrapping: true;
    thousands: true;
    format: 2;
    editable: true;
}

spinbox#价格:focus {
    focus-border-color: #007ACC;
}