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 |