사용자 도구

사이트 도구


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");
  }

↑ 상위로 가기

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 프로시져를 실행한다.
              uBiDataManager1.Init();
              
              // 화면에 배치된 그리드 컨트롤에 사용할수 있는 유한...
              // gridMain.ClearColumnsFilter(); // 필터조건 삭제
              
              // 그리드 컨트롤에 특정 컬럼 '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);
              // 아래 추가코드 작성
          }
      }
  }
  
  

↑ 상위로 가기

templetcode.1752112978.txt.gz · 마지막으로 수정됨: (바깥 편집)