사용자 도구

사이트 도구


templetcode

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
templetcode [2025/07/10 01:12] admintempletcode [2025/12/06 07:26] (현재) – 바깥 편집 127.0.0.1
줄 5: 줄 5:
 ==== 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");
 +    }
  
-==== Templet : BaseModule 의 code 부분 설먕 ==== 
  
-    Templet는 초기 새로만들기로 만들어진 클래스이며 이는 이름바꾸기를 통해 업무화면에 맞게 수정 해야 한다.+[[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.1752109974.txt.gz · 마지막으로 수정됨: (바깥 편집)