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) | 현재 사용자 로그아웃 |
글로벌 설정
| 프로퍼티 | 타입 | 설명 |
|---|---|---|
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 등.
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 |