XScript 매뉴얼 · Chapter 32

GUI — 뷰 / 컨트롤 제어

GUI 는 스크립트에서 화면과 컨트롤을 조작하는 글로벌 객체입니다. 뷰 전환, 다이얼로그, 컨트롤 속성(Visible / Enabled / Text / Color) 변경, 로그인 제어 등 UI 관련 전 기능이 여기에 모여 있습니다.

실전 예제

// 시작 버튼 눌림 표시
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, int visibleMode)0 Visible, 1 Hidden, 2 Collapsed
bool SetControlVisible(string moduleName, string controlName, bool visible)true Visible / false Collapsed
bool SetControlVisiblity(string moduleName, string controlName, int visibility)명시적 상수 (Visibility_Visible/Hidden/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_Ok, EB_YesNo, EB_OkCancel, EB_RetrySkip, EB_Reset 등.

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