XScript 手册 · Chapter 32
GUI — 视图 / 控件控制
GUI 是在脚本中操作画面与控件的全局对象。视图切换、对话框、
控件属性(Visible / Enabled / Text / Color)更改、登录控制等
与 UI 相关的全部功能都集中于此。
实战示例
xscript
// 显示开始按钮被按下
GUI.SetControlBoolProperty("ViewRun", "btnStart", "IsDown", ON);
GUI.SetControlBoolProperty("ViewRun", "btnStop", "IsDown", OFF);
// 控件隐藏/显示
GUI.SetControlVisible("ViewSetup", "tbTimeout", true);
GUI.SetControlVisible("ViewSetup", "pnlSwingOption", false);
// 更改文字颜色(需确认在深色/浅色主题下都清晰可见)
GUI.SetControlBrushProperty("ViewMain", "lblUnitConnect", "Foreground", "#FFFF0000");
// 页面跳转
GUI.ShowPage("BasePanel", "ViewOrder");
// 初始化对话框
GUI.ShowInitDialog();
// 关闭对话框
GUI.CloseDialog("DlgOrderCancel", true);
// 登出
GUI.Logout();主要方法
Visible · Enable
| 签名 | 说明 |
|---|---|
bool SetControlVisible(string moduleName, string controlName, bool visible) | true Visible / false Collapsed |
bool SetControlVisiblity(string moduleName, string controlName, int visibility) | 整数模式 — 0 Visible / 1 Hidden / 2 Collapsed |
bool SetControlBoolProperty(string moduleName, string controlName, string propertyName, bool onoff) | 任意 bool 属性 |
Text · Value
| 签名 | 说明 |
|---|---|
bool SetControlStringProperty(string moduleName, string controlName, string propertyName, string value) | 字符串属性 |
bool SetControlDoubleProperty(string moduleName, string controlName, string propertyName, double value) | 实数属性 |
bool SetControlIntProperty(string moduleName, string controlName, string propertyName, int value) | 整数属性 |
bool SetControlBrushProperty(string moduleName, string controlName, string propertyName, string color) | 颜色(Brush) |
视图切换 · 对话框
| 签名 | 说明 |
|---|---|
bool ShowPage(string viewBaseName, string pageName) | 视图切换 |
bool CloseDialog(string viewModuleName, bool dlgResult) | 关闭对话框 |
void ShowInitDialog(void) | 初始化对话框 |
认证
| 签名 | 说明 |
|---|---|
bool Logout(void) | 当前用户登出 |
全局设置
| 属性 | 类型 | 说明 |
|---|---|---|
GlobalBlinkTimerInterval | int | 闪烁周期(ms) |
通用对话框辅助函数(脚本全局)
| 函数 | 说明 |
|---|---|
ShowMessage(button, messageCode) / ShowMessage(button, text) | 确认对话框 |
ShowError(button, errorCode, subMsg) | 错误对话框 |
ShowTimerMessage(button, messageCode) | 自动关闭的消息 |
button 常量:EB_Ok、EB_YesNo、EB_OkCancel、EB_RetrySkip、EB_Reset 等。
xscript
if (ShowMessage(EB_YesNo, 210) == ER_No)
{
return false;
}
ShowError(EB_Reset, 1201, $"{unitName} > Sens:{cnvSensorName}");
ShowTimerMessage(EB_Ok, 215);提示
- 消息代码在 Message Editor 中管理 — 脚本中只引用数字。
- 由于深色/浅色主题都需要确保可读性,
Foreground/Background引用 主题资源更安全(硬编码的#FFFFFFFF在主题切换时可能被遮挡)。 - 长线程作业期间不要直接更新 UI,而应通过变量绑定间接刷新。
GUI 全函数参考(XUtilGui)
依据 C# 源码 — 脚本可直接调用的所有函数。
消息框
| 函数 | 含义 |
|---|---|
GUI.ShowMessage(buttonType, code, args...) | 基于代码的消息对话框。返回 = XEventResult |
GUI.ShowMessage(code, args...) / (format, args...) / (buttonType, format, args...) | 代码或格式字符串 |
GUI.ShowTimerMessage(buttonType, code, args...) / (buttonType, msg) / (buttonType, format, args) | 计时器自动关闭 |
GUI.ShowMessageStudio(...) / GUI.ShowTimerMessageStudio(...) | 在 Studio(开发工具)上弹出的变体 |
GUI.IsShowMessage() / GUI.HideMessage() | 当前是否显示消息 / 强制关闭 |
GUI.SetMessageBoxLayout(width, height, msgFontSize, titleFontSize=0) | 框尺寸/字体 |
GUI.SetErrorDlgLayout(width, height, msgFontSize, titleFontSize=0) | 错误对话框变体 |
GUI.GetMsg(code) / GUI.GetMsgStudio(code) | 消息代码 → 仅查询文本 |
GUI.GetErrorMessage(code) | 错误代码 → 文本 |
对话框 / 窗口
| 函数 | 含义 |
|---|---|
GUI.ShowDialog(viewModuleName) | 模态对话框。OK = true,Cancel = false |
GUI.CloseDialog(viewModuleName, dlgResult) | 强制关闭对话框 + 设置结果 |
GUI.ShowWindow(viewModuleName) | 非模态窗口 |
GUI.SetWindowPos(viewModuleName, left, top, cx, cy) | 窗口位置/大小 |
GUI.CloseWindow(viewModule) / (childControl) | 关闭窗口 |
GUI.AdjustWindowVisibleOnScreen(window) | 在多显示器中收入画面内 |
GUI.GetTopWindow(childControl) | 子控件所属的顶层窗口 |
GUI.ShowInitDialog() | 初始化对话框(现场启动流程) |
GUI.ShowManualDialog(messageCode) | 手动动作对话框 |
JobFile · 监控页
| 函数 | 含义 |
|---|---|
GUI.ShowJobFileNewDialog() / ShowJobFileOpenDialog() / ShowJobFileSaveAsDialog() | JobFile 标准对话框 |
GUI.ShowMotorMonitor() / GUI.ShowIoMonitor() | 显示电机/IO 监控 |
GUI.ShowPage(viewBaseName, pageName, hideConfirm=true) | 页面切换 |
GUI.ShowRunPage() | 切到主 Run 页 |
用户 / 权限
| 函数 | 含义 |
|---|---|
GUI.Login(userLevel) / (id, pw) / (id, pw, requiredLevel) | 登录(3 种变体) |
GUI.Logout() | 登出 |
GUI.ShowUserModify(userLevel) | 用户编辑对话框 |
GUI.SetPageLevel(viewName, userLevelInt) / (viewName, userLevelStr) | 页面显示权限 |
控件属性 — 脚本修改 GUI
| 函数 | 含义 |
|---|---|
GUI.SetControlVisible(module, control, visibleMode) | Visible 切换 |
GUI.SetControlVisiblity(module, control, visibility) | 0 ~ 2(Visible/Hidden/Collapsed) |
GUI.SetControlBoolProperty(module, control, property, onoff) / GetControlBoolProperty(...) | bool 属性 |
GUI.SetControlIntProperty(...) / GetControlIntProperty(...) | int 属性 |
GUI.SetControlStringProperty(...) | string |
GUI.SetControlDoubleProperty(...) | double |
GUI.SetControlBrushProperty(module, control, property, color) | 颜色(#RRGGBB / 资源键) |
GUI.SetControlDateTimeProperty(...) | long Ticks |
GUI.InvokeControlMethod(module, control, methodName) | 调用控件方法 |
监控 / 屏幕
| 函数 | 含义 |
|---|---|
GUI.GetScreenCount() | 显示器数 |
GUI.GetMainScreenIndex() | 主显示器索引 |
GUI.GetScreenWorkArea(idx, ref left, ref top, ref width, ref height) | 工作区 |
虚拟键盘
| 函数 | 含义 |
|---|---|
GUI.ShowVirtualKeyboard(control) | 显示 |
GUI.InvokeVirtualKeyboard(control) | 强制调用 |
文件对话框
| 函数 | 含义 |
|---|---|
GUI.ShowOpenFileDialog(initDir, ref defaultFile, fileFilter) | 打开文件 |
GUI.ShowSaveFileDialog(initDir, ref defaultFile, fileFilter) | 保存文件 |
GUI.ShowFolderSelectDialog(initPath) | 选择文件夹 |
多语言 / Excel 导入导出
| 函数 | 含义 |
|---|---|
GUI.ChangeProjectLanguage(lang) / GUI.ChangeProjectLanguageByIndex(idx) | 切换语言 |
GUI.GetCurrentProjectLanguage() / GUI.GetCurrentProjectLanguageIndex() | 当前语言 |
GUI.ExportControlLangTextToExcel(path) / GUI.ImportControlLangTextFromExcel(path) | 控件多语言 ↔ Excel |
GUI.ExportControlLangTextToExcelByDialog(openFolder) / GUI.ImportLangTextExcelFileByDialog() | 对话框变体 |
GUI.ExportMessageDataByDialog(openFolder) / GUI.ImportMessageDataByDialog() | 消息数据 ↔ Excel |
GUI.ExportErrorDataByDialog(openFolder) / GUI.ImportErrorDataByDialog() | 错误数据 ↔ Excel |