06 · 脚本与程序集

画面和数据搭好后,复杂逻辑靠脚本。脚本用 C#(带易语言式界面简写),在程序集编辑器里写。程序集分两种:

  • 窗口程序集 —— 每张画面一个同名模块,写这张画面的进入/退出/元素事件脚本。
  • 全局程序集 —— 软件启动/退出脚本、全局条件脚本、全局周期脚本。

打开程序集编辑器

  • 工程树 窗口 → 窗口程序集 → 双击某模块 进该画面脚本;
  • 工程树 全局 → 全局程序集 进启动/退出/全局脚本;
  • 或工具菜单 → 程序集(全局脚本)。

【配图:程序集编辑器——左侧子程序列表,中间带语法高亮的代码区,底部诊断】


写脚本:C# + 界面简写

脚本是真 C#(Roslyn 编译),函数库以对象形式暴露,直接写 Tag.GetFloat(...)、Log.Info(...) 就是调它们。函数库共 15 个:

Tag    Log    Sys    Math2   Str    Bit    Fs
Csv    Timer  Alarm  History  Report  Ui    Db     Comm
库 干什么
Tag 读写实时点值(最常用)
Log 写日志(输出面板 + 本机文件)
Sys 系统信息、当前时间、当前操作者
Math2 工控数学(量程变换 / 限幅 / 取整…,越界不抛)
Str 字符串处理
Bit 位运算(按位取值 / 置位)
Fs 文件读写
Csv CSV 表格读写(首行表头,与 Fs.AppendCsvRow 互读互通)
Timer 定时
Alarm 报警
History 历史查询
Report 报表 / 实时表:行列增删改查、整表刷新
Ui 界面操作
Db 数据库
Comm 通讯

库目录里每条都带中文说明 + 用法提示;Alarm / History / Db / Ui / Comm 这类依赖子系统的库会标"待就绪",没就绪时别急着用。

函数名中英文都认:点位.读浮点("炉温") 和 Tag.GetFloat("炉温") 完全等效 —— 写中文不用背英文,函数库目录里每条都标着它对应的中文名。

界面简写(易语言式):#窗口.组件.属性 = 值 写界面、变量 = #窗口.组件.属性 读界面;画面脚本里可省窗口名。


代码提示与高亮

  • C# 语法高亮 —— 关键字/字符串/注释着色。
  • 内联代码提示 —— 敲一半弹出补全候选(函数 / 点 / 变量),回车/Tab 补上。
  • 快速插入弹窗 —— 不记函数名时,弹窗按分类挑:函数 / 点 / 变量 / 界面(界面页:画面→组件→属性,自动拼成 #窗口.组件.属性)。
  • 提示面板 —— 光标停在某函数上,底部"提示"面板显示它的用法;双击函数名看用法详情。

编译校验(F7)

写完点编译按钮(或 F7)做编译校验:

  • 底部输出面板列出诊断(错误/警告),点一条能跳到出错位置。
  • 校验用的是真 Roslyn 编译器,和最终编译同一套,不是假检查。

运行菜单里还有编译 / 快速编译、校验工程(整工程一起校验)。


全局查找 / 替换

编辑菜单 → 查找(脚本 / 元件文本 / 变量):

  • 跨整个工程搜脚本代码、元件文本、变量名。
  • 全局替换:只改脚本代码,字面量区分大小写,批量写回前用确认框拦一下(避免误改一片)。

函数库目录

快速插入弹窗里的清单是两半拼起来的:

  • 前端自带的语法片段 —— 控制流(if / 循环 / switch)、变量声明、运算与比较、文本处理、时间、数学、类型转换,这些是 C# 语言本身的东西,不来自任何库。
  • 后端的函数库目录 —— 上面那 15 个库的门面函数(签名 + 中文说明 + 插入片段),由后端统一给出。后端加库/加函数,前端不用改。

两边每条都带用法 Hint,光标停在函数上时底部「提示」面板显示它。


一句话总结

脚本用 C# + #窗口.组件.属性 界面简写,在程序集编辑器里写(窗口程序集分画面、全局程序集管启停/条件/周期);带语法高亮、内联补全、快速插入弹窗、光标跟随提示;F7 编译校验用真 Roslyn、诊断可跳错;全局查找替换跨工程改脚本。