控件权限根据寄存器条件控制显示与触摸。本节使用权限范例的单条件、AND、OR 和三条件逻辑,观察按钮是否出现、计数是否增加。
核心功能
选中字设置按钮,展开 安全设置 → 控件权限。下图为“双条件 AND”。

| 序号 | 属性 | 本例 | 作用 |
|---|---|---|---|
| 1 | 启用 | 是 | 开启条件判断。 |
| 2 | 条件地址 | LW1100 | 读取条件 A。 |
| 3 | 比较 | == | 支持 ==、!=、≤、≥、<、>、IN、OUT。 |
| 4 | 值 | 1 | 本例要求 A 等于 1。 |
| 5 | 附加条件 → 启用 | AND | AND 要求两项都成立;OR 要求至少一项成立;不启用时仅判断主条件。 |
| 6 | 附加条件地址 | LW1101 | 读取条件 B。 |
| 7 | 附加比较 | == | 第二项的比较关系。 |
| 8 | 附加值 | 1 | 本例要求 B 等于 1。 |
| 9 | 无权限时 | 隐藏控件 | 可选择隐藏控件或禁止触控。 |
| 10 | 用户等级 → 启用 | 否 | 需要登录分级时,按 7.3 登录权限 另行设置。 |
位置、字体、图片和触摸伴音等公共属性见 第三章 控件。
IN/OUT 用于区间判断;选择后设置下限、上限。普通比较使用单个“值”。
打开 SeasideAccess.apustai,编译、运行,进入“条件权限”画面。
| 地址 | 用途 |
|---|---|
| LW1100、LW1101、LW1102 | 条件 A、B、C,顶部按钮在 0/1 间切换。 |
| LW1103 | Lua 输出的三条件允许标志。 |
| LW1120~LW1123 | 四个按钮各自的计数值。 |
| 按钮 | 允许条件 | 不满足时 |
|---|---|---|
| 单条件 | A=1 | 隐藏 |
| 双条件 AND | A=1 且 B=1 | 隐藏 |
| 双条件 OR | A=1 或 B=1 | 保持显示,禁止触摸 |
| 三个条件 | A、B、C 均为 1 | 保持显示,禁止触摸 |
四个“计数 +1”按钮的业务动作相同,仅权限条件不同。隐藏时按钮不可见;禁止触摸时按钮仍显示,但点击不增加计数。
单条件按钮启用权限,设置 LW1100 == 1,关闭附加条件,选择“隐藏控件”。AND 按钮按第 1 节增加 LW1101 == 1。
| A | B | 单条件 | AND |
|---|---|---|---|
| 0 | 0 | 隐藏 | 隐藏 |
| 1 | 0 | 可操作 | 隐藏 |
| 0 | 1 | 隐藏 | 隐藏 |
| 1 | 1 | 可操作 | 可操作 |
将附加条件改为 OR,“无权限时”改为 禁止触控。

A 或 B 任意一个为 1 时,按钮可点击;两者都为 0 时,按钮保持可见但计数不变。
三个条件按钮读取 LW1103 == 1,关闭附加条件,选择“禁止触控”。Lua 每次运行时计算结果:
local LW = 1
function on_run(screen)
if screen ~= 1 then return end
local allowed = get_uint16(LW, 0x1100) == 1
and get_uint16(LW, 0x1101) == 1
and get_uint16(LW, 0x1102) == 1
set_uint16(LW, 0x1103, allowed and 1 or 0)
end
代码与下载工程一致,仅使用 LW。已有 on_run 时,把判断合入原回调,避免重复定义。
依次开启 A、B、C,再关闭 A,对照按钮显示和计数变化:

| A / B / C | 可操作的按钮 |
|---|---|
| 1 / 0 / 0 | 单条件、OR |
| 1 / 1 / 0 | 单条件、AND、OR |
| 1 / 1 / 1 | 四个按钮全部可操作 |
| 0 / 1 / 1 | 仅 OR |
权限条件控制本控件的界面操作;设备启停等关键条件仍应在设备控制逻辑中判断。
背景照片:Maldive97.jpg,Samoano, CC BY-SA 3.0。本章裁切、调色后的背景沿用该许可;界面排版与按钮为原创。