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、诊断可跳错;全局查找替换跨工程改脚本。