내용으로 건너뛰기
UBi3
사용자 도구
로그인
사이트 도구
검색
도구
문서 보기
이전 판
역링크
최근 바뀜
미디어 관리자
사이트맵
로그인
>
최근 바뀜
미디어 관리자
사이트맵
추적:
templetcode
이 문서는 읽기 전용입니다. 원본을 볼 수는 있지만 바꿀 수는 없습니다. 문제가 있다고 생각하면 관리자에게 문의하세요.
===== UX 화면 구조설명 ===== 메뉴권한 체계에 의한 제어를 받아야 하는 화면은 BaseModule class 를 상속하게 된다.\\ 아래 부모클래스에 대한 설명을 참조 바랍니다. ==== BaseModule class ==== 업무화면을 만들때 상속받아진 부모 클래스 public class BaseModule : XtraUserControl, IButton, IUBiFormAuthority, IUBiManager { public BaseModule(); public Dictionary<string, object> DBParam; public Dictionary<string, object> Param { get; set; } public bool IsLoaded { get; set; } public string MenuSeq { get; set; } public UBiDataManager DataBase { get; set; } public string ModuleCode { get; set; } public string ModuleName { get; set; } public UBiEditModeEnum EditMode { get; } public TabbedView ParentTab { get; set; } public bool IsSearched { get; set; } // 권한이 저장된 Attribute public UBiFormAuthority Authority { get; set; } public event OpenRequeatEvent EventOpenRequest; public bool CreateScreen(string screenName, Dictionary<string, object> param = null, string menuLinkYn = "Y"); public virtual void Form_Show(); public BaseModule GetInstance(string screenName, string popClass = "", Dictionary<string, object> param = null); public UBiMdiForm GetLoadPopupScreen(string screenName, string title, UBiFormAuthority authority, Dictionary<string, object> param = null, int iconIdx = 1, FormStartPosition position = FormStartPosition.CenterScreen); public void InitAuthority(UBiFormAuthority _au); public void InitLanguage(); public void LoadGridViewLayout(); // 이 클래스를 상속받은 자식 클래스에서 구현해야할 Mathod 들... public virtual bool ModuleClosing(); public virtual void OnAddClick(UBiMdiForm f); public virtual void OnBookMarkClick(UBiMdiForm f); public virtual void OnCloseAllClick(UBiMdiForm f); public virtual void OnCloseClick(UBiMdiForm f); public virtual void OnDeleteClick(UBiMdiForm f); public virtual void OnHelpClick(UBiMdiForm f); public virtual void OnInitClick(UBiMdiForm f); public virtual void OnInitLayoutClick(UBiMdiForm f); public virtual void OnLoadCDTClick(UBiMdiForm f); public virtual void OnLoaded(object sender, EventArgs e); public virtual void OnManualClick(UBiMdiForm f); public virtual void OnPrintClick(UBiMdiForm f); public virtual void OnSaveCDTClick(UBiMdiForm f); public virtual void OnSaveClick(UBiMdiForm f); public virtual void OnSaveLayoutClick(UBiMdiForm f); public virtual void OnSearchClick(UBiMdiForm f); public virtual void OnSerialData(string data); // 이화면에서 팝업을 호출하기 위해 준비된 Mathod public BaseModule OpenModal(string screenModule, string popClass, Dictionary<string, object> param = null); public void UXEventLogWrite(string LogTitle); protected override void Dispose(bool disposing); protected override void OnLoad(EventArgs e); public enum FormPermissionEnum { ReadOnly = 0, ReadWrite = 1 } // 이 화면이 팝업으로 불리워진다면 이벤트가 작동함 public delegate void OpenRequeatEvent(object sender, string ScreenName, Dictionary<string, object> param, string menuLinkYn = "Y"); } [[ux|↑ 상위로 가기]] ==== Templet : BaseModule 의 code 부분 설명 ==== Templet는 초기 '새로 만들기'로 만들어진 클래스이며 이는 이름 바꾸기를 통해 업무화면에 맞게 수정 해야 한다. namespace UX { /// <summary> /// 화면명 /// 화면 설명 /// 작성자 : 개발자 /// 작성일 : 2022-09-21 /// </summary> [ToolboxItem(false)] public partial class 프로젝트명을지정하시오 : BaseModule { public 프로젝트명을지정하시오() { InitializeComponent(); Load += Form_Load; } private void Form_Load(object sender, EventArgs e) { // 호출된 부모로부터 받은 파라미터가 있으면 처리한다. if (Param != null) { //UBiMessageBox.Show(Param["message"].Nvl(), System.Windows.Forms.MessageBoxIcon.Information, true); } // 화면활성화 되면서 최 상위 DataAdapter의 자동조회 여부가 체크되 있으면 SELECT 프로시져를 실행한다. // 초기에 DataManager에 만들어진 ADapter들을 초기화 하며 자동 load된 data를 각 화면의 Lookup에 바인딩한다. // DataAdapter와 연결된 GridView의 컬럼들을 그리게 된다 uBiDataManager1.Init(); 화면에 배치된 그리드 컨트롤에 필가 있다면 제거 gridMain.ClearColumnsFilter(); // 필터조건 삭제 GridView 일정조건에서 cell에 포커스가 가지 못하게 해야하는 경우 // gridMain.ShowingEditor += (a, b) => // { // if (gridMain.GetFocusedDataRow()["INPUT_LOCK"].Nvl("Y").Equals("Y")) // { // b.Cancel = true; // UBiMessageBox.Show("투입 LOCK이 걸려 있습니다.", MessageBoxIcon.Information, false); // SystemSounds.Beep.Play(); // return; // } // }; 그리드 컨트롤에 특정 컬럼 'END_CHK' 에 따라 조건부 Sum을 실행함 //gridMain.CustomSummaryCalculate += (a, b) => //{ // gridSub.UpdateCurrentRow(); // // if (!b.IsTotalSummary // || !((b.Item as GridSummaryItem).FieldName == "AMT")) // return; // // if (b.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Start) // { // sumAMT = 0; // } // if (b.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Calculate) // { // if (b.Row is DataRowView r) // { // if (r.Row["END_CHK"].Nvl().Equals("Y")) // { // if ((b.Item as GridSummaryItem).FieldName == "AMT") // sumAMT += (decimal)b.FieldValue; // } // } // } // // if (b.SummaryProcess == DevExpress.Data.CustomSummaryProcess.Finalize) // { // if ((b.Item as GridSummaryItem).FieldName == "AMT") // b.TotalValue = sumAMT; // } //}; cell 체인지 Evnet //gridMain.CellValueChanged += (a, b) => //{ // if (b.Column.FieldName.Equals("IS_CHK")) // { // // 처리코드 여기에... // } //}; 조건에 의한 Row색상 지정 // gridMain.RowCellStyle += (a, b) => // { // // if (b.RowHandle >= 0) // { // UBiGridView view = a as UBiGridView; // if (view.GetRowCellValue(b.RowHandle, "PLAN_QTY").Nvl("0").ToInt() > 0) // { // b.Appearance.ForeColor = Color.Blue; // } // if (b.Column.FieldName.Equals("ISBUY")) // { // if(b.CellValue.Nvl("N").Equals("Y")) // b.Appearance.ForeColor = Color.Red; // } // } //}; } #region === IButton Interface 버튼 구현 === /// <summary> /// 화면의 초기화 버튼 /// </summary> public override void OnInitClick(UBiMdiForm f) { base.OnInitClick(f); // 아래 추가코드 작성 } /// <summary> /// 조회버튼 클릭 /// </summary> public override void OnSearchClick(UBiMdiForm f) { base.OnSearchClick(f); try { UBiMessageBox.ShowWait("Loading...", "Loading..."); //조회를 실행하기 위해 아래코드중 적절한 문장을 활성화 하시오 //1. 컨프롤.DataAdapter.Select(true); //또는 //2. uBiDataManager1.GetAdapter("TEST").Select(true); } catch (Exception ex) { ex.UBiShowException(this); } finally { UBiMessageBox.CloseWait(); } } /// <summary> /// 추가버튼 클릭 /// </summary> public override void OnAddClick(UBiMdiForm f) { base.OnAddClick(f); // 아래 추가코드 작성 } /// <summary> /// 삭제버튼 클릭 /// </summary> public override void OnDeleteClick(UBiMdiForm f) { base.OnDeleteClick(f); // 아래 추가코드 작성 gridMain. } /// <summary> /// 저장 버튼 클릭 /// </summary> public override void OnSaveClick(UBiMdiForm f) { base.OnSaveClick(f); try { UBiMessageBox.ShowWait("Wait", "Saving into Database..."); // ====== 저장 예문 ======= // 필요시 정합성 체크를 수행한다. // ResponseDB res = 컨트롤.DataAdapter.Update(); //if (res.Code == 0) //{ // UBiMessageBox.Show(res.Message, MessageBoxIcon.Information, true); // OnSearchClick(f); // 재조회 //} //else // UBiMessageBox.Show(res.Message, MessageBoxIcon.Error, true); } catch (Exception ex) { ex.UBiShowException(this); } finally { UBiMessageBox.CloseWait(); } } /// <summary> /// 메뉴얼등의 로딩처리 /// </summary> public override void OnHelpClick(UBiMdiForm f) { base.OnHelpClick(f); // 필요시에 아래 추가코드 작성 } #endregion /// <summary> /// 화면을 닫으려 한다. /// </summary> public override void OnCloseClick(UBiMdiForm f) { base.OnCloseClick(f); // 아래 추가코드 작성 } } } [[ux|↑ 상위로 가기]]
templetcode.txt
· 마지막으로 수정됨:
2025/12/06 07:26
저자
127.0.0.1
문서 도구
문서 보기
이전 판
역링크
맨 위로