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)当前用户登出

全局设置

属性类型说明
GlobalBlinkTimerIntervalint闪烁周期(ms)

通用对话框辅助函数(脚本全局)

函数说明
ShowMessage(button, messageCode) / ShowMessage(button, text)确认对话框
ShowError(button, errorCode, subMsg)错误对话框
ShowTimerMessage(button, messageCode)自动关闭的消息

button 常量:EB_OkEB_YesNoEB_OkCancelEB_RetrySkipEB_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