所属产品: Mingcedar Studio DESIGNER
模板:input / keypad / table 与模板变量、批量替换 | Mingcedar Studio
模板将一组组件及其行为保存为可复用内容,通过实例参数替换设备名称、文本或其他配置。内置模板包括 Input、Keypad、Table、Alarm、图表和视频;Template Edit 配置实例,Batch Replace 按类别批量替换。
<div class="manual-doc-article manual-doc-article-section"><h2 id="templates-input-keypad-table-variables-batch-replace">功能: 模板:input / keypad / table 与模板变量、批量替换</h2>
模板将一组组件及其行为保存为可复用内容,通过实例参数替换设备名称、文本或其他配置。内置模板包括 Input、Keypad、Table、Alarm、图表和视频;Template Edit 配置实例,Batch Replace 按类别批量替换。
<div class="doc-card-list">
<article class="doc-card">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-1">功能说明</h3>
<p>模板保存对象组、行为、参数定义和实例值。将实例差异写成占位符,保存到模板库后按设备插入。内置 Input、Keypad、Table、Alarm、图表和视频提供专用字段;Template Library 管理模板,Template Edit 编辑实例,Batch Replace 批量替换。</p>
<ul class="doc-related-links">
<li><a href="/ppt/manual/design-reuse-guide/">动手练习:复用方式与参数</a></li>
<li><a href="/ppt/manual/recipe-template-bit-write/">动手练习:位写入与位显示教程</a></li>
<li><a href="/ppt/manual/recipe-page-parameter-input/">动手练习:Input:草稿、变量、模板与传参</a></li>
<li><a href="/ppt/manual/recipe-parameterized-table/">动手练习:Table 数据绑定与筛选</a></li>
</ul>
</article>
<article class="doc-card">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-2">使用方法:保存、插入与各编辑器字段</h3>
<p>将组件组合并选中,打开 Templates → Library → Save selection。双击或拖拽库中模板插入实例;Import / Export 交换模板,Delete 删除模板。</p>
<p>Template Edit 按模板类型提供以下字段:</p>
<ul>
<li>所有实例通用:Position and Size 区的 X / Y / Width / Height(顶部还会只读显示 Instance / Template / Group)</li>
<li>普通模板实例:Template Variables 区按扫描到的 <变量名> 逐行列出输入框(如 PLC、DB、RUN_TAG),填进去即对整组生效</li>
<li>input 模板:Input Mode(Plain Input 仅留本地输入值不自动写 / Runtime Variable 绑运行时变量 / PLC Tag 绑 PLC 标签)、Variable 或 PLC Tag(随模式切换)、Write Trigger(默认 Immediate)、Font Size</li>
<li>keypad 模板:Target Input(选当前页里要操作的输入模板;数字键追加字符,Back 删一位,Clear 清空,OK 通过目标输入框写出)</li>
<li>table 模板:Table Name、Table Text ID、Headers、Header Text IDs、Rows(Rows 可填数组、变量名或函数名)</li>
</ul>
<div class="manual-code" data-code-language="text"><div class="manual-code-toolbar"><span>Text</span><span class="manual-code-tools"><small>Text</small><button type="button" data-copy-code data-copied="已复制" data-failed="请选中代码后复制" aria-label="复制代码: Text">复制代码</button><span class="manual-code-status" role="status"></span></span></div><pre tabindex="0" class="docs-code-block shiki github-light" style="background-color:#fff;color:#24292e" tabindex="0"><code><span class="line"><span>// 表达式里写模板变量(分段式 / 整体式)</span></span>
<span class="line"><span>ReadTagBoolean('<PLC>.<DB>.RUN', false)</span></span>
<span class="line"><span>ReadTagBoolean('<RUN_TAG>', false)</span></span>
<span class="line"><span>// 实例填 PLC=PLC_LINE01, DB=DB_PUMP01 -> 运行时等价于 PLC_LINE01.DB_PUMP01.RUN</span></span></code></pre></div>
</article>
<article class="doc-card">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-3">Template Edit 通用区域按什么顺序填</h3>
<p>选中实例根组,打开 Templates → Edit Instance。核对 Instance、Template、Group,填写 Position and Size 和 Template variables,再进入对应模板区域。变量修改仅影响当前实例。</p>
<ul>
<li>Instance:确认当前页实例名称。</li>
<li>Template:确认来源模板,避免编辑错实例。</li>
<li>Group:确认模板所属分类。</li>
<li>X / Y:实例左上角位置。</li>
<li>Width / Height:实例整体尺寸。</li>
<li>Template variables:逐项填写当前设备或当前页面使用的值。</li>
<li>底部显示 ValidationMessage 时,先修正对应字段再 Save。</li>
</ul>
</article>
<article class="doc-card">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-4">Input 模板逐项配置</h3>
<p>Input mode 先决定值保存在哪里,再填写随模式出现的目标字段。Plain Input 只保留输入内容;Runtime Variable 写入当前运行时变量;PLC Tag 对应设备 Tag。需要自动提交时选择 Immediate,需要由外部按钮或脚本统一提交时选择 External。最后设置 Font size。</p>
<ul>
<li>Plain Input:不填写 Variable 或 PLC Tag,适合先收集文本。</li>
<li>Runtime Variable:固定名称直接填 speedSetpointDraft;动态变量名填 =selectedVariableName,表达式返回变量名字符串。</li>
<li>PLC Tag:固定名称可填 PLC_LINE01.PUMP01.SPEED_SETPOINT 或 <PLC>.PUMP01.SPEED_SETPOINT;动态目标填 =selectedSetpointTag。</li>
<li>Immediate:确认输入后立即按当前绑定写出。</li>
<li>External:按 Enter 或离开输入框不自动提交;Keypad 的 OK 仍会提交目标 Input,且不会执行自定义 Click Script 校验。</li>
<li>保存后在运行页验证显示和提交,并在 Input 中按 Esc 检查放弃草稿。Input 不提供数据类型和数值上下限字段;业务范围校验放在提交脚本中。</li>
</ul>
</article>
<article class="doc-card doc-card-warn">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-5">Keypad 模板连接目标输入框</h3>
<p>当前页必须先有 Input 模板。选择 Keypad 实例进入 Template Edit,在 Keyboard 区的 Target input 中选择或填写目标输入实例名称,保存后导出并验证 0–9、Back 退格、Clear 清空和 OK 提交。Keypad 没有取消键;可在 Input 中按 Esc 放弃草稿。窗口提示 No input templates were found 时,先插入并保存 Input 模板,再重新打开 Keypad 编辑器。</p>
<ul>
<li>先配置 Input,再配置 Keypad。</li>
<li>Target input 必须是当前页实际存在的输入模板实例。</li>
<li>重命名输入实例后,重新检查 Keypad 的 Target input。</li>
<li>PLC Tag 模式下验证确认动作是否触发权限、确认和写入。需要由提交按钮校验数值范围时,不要把 Keypad 绑定到该 PLC Tag 输入框;可以改用 Plain Input 收集草稿,再由按钮校验并写入。</li>
</ul>
</article>
<article class="doc-card doc-card-warn">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-6">Table 模板逐项配置</h3>
<p>Table name 是表格显示标题;Table text ID 是标题的翻译键。脚本定位和 ExportTable 使用 Behavior Browser 中的组件 Name 或 shapeId。先设 Font size 和每列宽度,再填写 Headers、Header text IDs 和 Rows。只要填写了列宽,所有已配置列的百分比合计必须为 100;全部留空时按等宽分配。</p>
<ul>
<li>Table name:表格显示标题,不是脚本定位名称。</li>
<li>Table text ID:标题的语言键;有翻译时替换 Table name,缺少翻译时保留标题文本。</li>
<li>Column layout:逐列填写百分比,合计 100%。</li>
<li>Headers:表头显示文本。</li>
<li>Header text IDs:与表头对应的语言键或文本标识。</li>
<li>Rows:填写数组、页面脚本变量名或返回数组的函数名。</li>
<li>保存后分别用 0 行、1 行和多行数据进行验证。</li>
<li>当前 Table 是只读文本表格;没有内置筛选、分页、单元格输入框、按钮列或逐行状态色。筛选和分页需先在脚本中整理数组;需要编辑或行操作时使用独立 Input / 按钮或自写页。</li>
</ul>
</article>
<article class="doc-card doc-card-warn">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-7">Alarm 模板筛选范围</h3>
<p>Alarm 区用于限定当前报警模板显示的范围。按需要勾选显示项,并在 Tags、PLC codes、Function groups、Device groups、Signal groups 中填写目标。多个值使用逗号或换行分隔。不要把显示名称填进编码字段。</p>
<ul>
<li>Tags:device-code.tag-code。</li>
<li>PLC codes:只填 device-code。</li>
<li>Function groups:device-code.group-code。</li>
<li>Device groups:device-code.group-code。</li>
<li>Signal groups:device-code.group-code。</li>
<li>只填写实际需要限制的维度;保存后在 Mingcedar 用已知报警验证结果范围。</li>
</ul>
</article>
<article class="doc-card doc-card-warn">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-8">模板变量、运行时变量和页面参数不是一回事</h3>
<p>以下四类值的生效时机和作用范围不同:</p>
<ul>
<li>模板变量 <PLC> / <DB> / <RUN_TAG>:模板实例级替换值,导出前必须替换完成;它不是运行时页面参数。</li>
<li>Plain Input:只保存输入模板当前值,通过 template.getValue("输入模板实例名") 读取;不会自动跨页。</li>
<li>Runtime Variable:当前运行页面内的变量,用于页面联动;不要当作跨页面协议。</li>
<li>PLC Tag:由宿主设备数据层维护,可跨页面读取同一 Tag,但这属于数据绑定,不是页面参数。</li>
<li>页面参数:通过 Open Link、openPage 或 Open Page as Popup 发送,由目标页 GetPageParameter* 读取。</li>
</ul>
</article>
<article class="doc-card">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-9">适用场景</h3>
<p>同类设备:保存泵或阀模板,为各实例填写 PLC、DB 等参数,替换相应绑定目标。</p>
<p>输入操作区:插入 Runtime Variable 或 PLC Tag 模式的 Input,再用 Keypad 的 Target Input 连接。脚本读取使用 template.getValue("输入组件名")。</p>
<p>Batch Replace:核对 Scope 和 Variables,输入 Find / Replace with,检查 Type / Object / Replace in / Current value / Replacement preview 后点击 Replace。</p>
</article>
<article class="doc-card doc-card-warn">
<h3 id="templates-input-keypad-table-variables-batch-replace-item-10">限制与常见问题</h3>
<ul>
<li>变量名必须用尖括号包起来;支持字母、数字、下划线和中文,但横杠、点号、空格不能放在变量名内部。团队模板建议用 <PLC>、<RUN_TAG> 这类 ASCII 大写名称;Tag 路径写成 <PLC>.<RUN_TAG>。</li>
<li>模板变量是“实例级”配置,只挂在模板实例根组上:复制整组时变量一起带走,所有子组件共享同一组值,不要指望逐个子组件单独设</li>
<li>编辑/插入时允许变量留空,但导出时会校验,若仍残留未替换的 <变量名> 会报错,导出前要填全</li>
<li>使用 Edit Instance 前需选中模板实例根组;选中普通图形或普通组后点击,会提示所选对象不是模板实例</li>
<li>keypad 必须先有输入模板:若当前页还没有 input 模板,Target Input 会提示先插入输入模板再回来配</li>
<li>Batch Replace 按选中类别处理文本、Tag、链接、脚本、行为设置或颜色,不替代模板结构调整;若每次替换后还要大量手改布局,应回到模板源定型</li>
</ul>
</article>
</div>
<div class="docs-note-grid manual-doc-image-grid">
<figure class="docs-note-card manual-doc-image-card" id="templates-input-keypad-table-variables-batch-replace-image-1">
<img src="/WEB_img/HQPPT/current/templates/edit-instance-variables.png" alt="Mingcedar Studio 模板实例编辑界面" loading="lazy" decoding="async" />
<figcaption>
<strong>图示 1: 模板实例 Template Edit</strong>
<p>在 Template Edit 中确认实例来源、位置尺寸,并填写本实例的模板变量。</p>
</figcaption>
</figure>
</div>
</div>