# 设定值滑块

> 在两端之间的一个滑块：拖动只是把值准备好，按键才写入，其余时候滑块跟随现场。

**设定值滑块**用手势而不是键入来移动一个设定值。它防的是滑块唯一可能出的那种事故，靠的是两步规矩：**拖动只是准备好，按键才写入**。移动滑块不会改变屏幕之外的任何东西，它只是说出所要求的那个值，而真正碰到现场，是操作员按下旁边那个发送按键的时候。一只袖子扫过触摸屏，最后和任何一次拖动一样以松手收场，所以“松手即写入”发出的恰恰是谁也没打算发出的那次手势。它属于*控制*类；新放置的一个占 6 × 1 个单元格。

这个控件自己不画任何读数；如果那个数字应该出现在屏幕上，就在行程旁边配一个[数值](component-value)。

## 数据 {#data}

| 字段 | 作用 | 取值 | 默认 |
|---|---|---|---|
| 地址 | 设定值落进去、又被读回来的那个带根 Logic 地址：一个内部存储值变量，或者一个可写点位。列表收窄到可写点位。 | 自由文本；建议的是可写点位 | 空 |

## 格式 {#format}

| 字段 | 作用 | 取值 | 默认 |
|---|---|---|---|
| 小数位 | 准备好的那个值和答复行写几位小数，这是这个控件写出数字的两个地方。留空则跟随工作站的小数偏好。超出区间的位数按边界取，面板会说明这一点。 | 0 到 15，或留空 | 空 |

## 行程 {#travel}

滑块可以走到哪里，可以停在哪里。两端是控件自己的声明，不是一个读数，正因如此，点位什么也不说的时候滑块照样能走。

| 字段 | 作用 | 取值 | 默认 |
|---|---|---|---|
| 最小值 | 行程从哪里开始。 | 任意有限数值 | 0 |
| 最大值 | 行程到哪里结束。等于或低于最小值就没有行程可走：面板会警告，滑块也会变成不可用，因为它什么也发不出去。 | 任意有限数值 | 100 |
| 步长 | 滑块移动的最小一步。它停下的每一个位置，都是从最小值算起整数个步长，所以发出去的值总是所声明的那些停点之一。步长除不尽整个行程是允许的，面板会说明最后一个停点落在哪里，那时最大值就不是这个滑块会发出的值了。 | 任意为正的有限数值 | 1 |

在**限值**环节已启用的点位上，行程的停点超出这些限值时，面板也会警告，并说出限值是多少：在限值之外准备好的值会在发送按键上被拒绝，而不是按边界取值。

## 它是怎么动作的 {#how-it-behaves}

- **跟随现场。** 什么都没准备好时，滑块站在点位自己的读数上。读数落在所声明的行程*之外*，或者根本没有良好的读数时，**不画滑块**：把滑块停在最小值上，等于画面自己编了一个设定值。
- **准备。** 第一次触碰把滑块冻结在点位最后报出的位置上，并给控件上色，这就是在告诉操作员：现在是你握着它了。拖动会吸附到各个停点，并被限制在行程之内。准备好的那个值只属于这幅画面：它到不了任何别的回路，也没有任何东西会把它当作读数画出来。
- **发送按键**在手指落下之前就说出它的后果：有值准备好时，它写着“设定 42.5”。发出去的值把滑块交还给点位；被出口拒绝的值仍然准备着，于是改正只是轻轻一推，不必把整个手势重来一遍。它的宽度从不改变：一开始就为行程能放到它上面的最宽的值留好了位置，所以准备一个值或把滑块交还给点位时，✕ 按键和行程都不会挪动。
- **✕ 按键**把滑块松开、交还给点位，这是从一次谁也没打算的准备里退出来的路。它始终在这一行上（什么都没准备好时不可用），所以按键绝不会在手指底下挪位置。
- 对着读屏软件，滑块念出准备好的那个值（“42.5，尚未发出”）、点位自己的读数，或者“没有读数”，绝不会念出一个点位没有报出来的数字。

## 写入的含义 {#write-semantics}

发送按键把准备好的那个值经由工作站唯一的逻辑出口写下去。放不下一个数的点位会在控件那一行上以拒绝作答；发送成功则答复“已写入 42.5”。一步一步走出来的值在发出之前会被清掉二进制残余，所以一个设定值绝不会以 `0.30000000000000004` 的样子到达现场。授权在按下的那一刻重新核对，答复行几秒之后过期。新放的滑块只有一行高，在角上标题下面，这一行很少还留得出答复的位置；这时答复在显示期间占用标题的位置。控件上面没有标题（没有写标题，或者标题让出了自己那一行）、格子里仍然放不下答复行时，答复占用发送按键上文字的位置；按键保持自己的宽度，所以 ✕ 按键和行程都不会移动（见[仪表画面页面](home#commands-permissions-and-the-lock-mark)）。

在**限值**环节已启用的点位上，超出这些限值的已准备值也会以同样的方式被拒绝，理由会说出这些限值，并且保持准备状态：否则点位会按边界取值，而答复行会报出一个现场从未收到的值。

在存放整数的点位上（量程换算和校准都不改变数值的整数类型点位，或者存放整数的内部存储值变量），带小数的已准备值也会以同样的方式被拒绝，而不是被取整（“这个点位接受整数，因此不会写入 2.5。”），并且保持准备状态：在这样的点位上，带小数的步长会让那些停靠位置成为永远不会发出的值。

## 权限与锁 {#permissions-and-the-lock}

发送需要角色具备操作仪表画面的权限。锁着的时候，行程和发送按键都不可用，组件戴上共用的锁标记，理由在它的提示里（见[仪表画面页面](home)）。绑定的点位读不到时会戴上共用的读数异常标记，而控件本身仍然可用，因为设定值是一个绝对值，不需要先有读数。

共用的外观、标识、位置与图层、动作这几个分区，写在[组件页面](components#the-shared-property-sections)。
