첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
본 블로그는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 블로그 콘텐츠 향상을 위해 쓰여집니다.

728x90
반응형
728x170

TestProject.zip
다운로드

▶ MainForm.cs

using System.Data.OleDb;
using System.Drawing;
using System.Drawing.Drawing2D;

using DevExpress.Utils;
using DevExpress.XtraEditors;
using DevExpress.XtraVerticalGrid;
using DevExpress.XtraVerticalGrid.Events;
using DevExpress.XtraVerticalGrid.Rows;

namespace TestProject
{
    /// <summary>
    /// 메인 폼
    /// </summary>
    public partial class MainForm : XtraForm
    {
        //////////////////////////////////////////////////////////////////////////////////////////////////// Field
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region Field

        /// <summary>
        /// 연결
        /// </summary>
        private OleDbConnection connection;

        /// <summary>
        /// 모양 객체 1
        /// </summary>
        private AppearanceObject appearanceObject1;
        
        /// <summary>
        /// 모양 객체 2
        /// </summary>
        private AppearanceObject appearanceObject2;

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
        ////////////////////////////////////////////////////////////////////////////////////////// Public

        #region 생성자 - MainForm()

        /// <summary>
        /// 생성자
        /// </summary>
        public MainForm()
        {
            InitializeComponent();

            this.appearanceObject1 = new AppearanceObject();

            this.appearanceObject1.BackColor    = Color.Orange;
            this.appearanceObject1.BackColor2   = Color.Yellow;
            this.appearanceObject1.ForeColor    = Color.DarkRed;
            this.appearanceObject1.GradientMode = LinearGradientMode.Vertical;

            this.appearanceObject2 = new AppearanceObject();

            this.appearanceObject2.BackColor    = Color.LightSteelBlue;
            this.appearanceObject2.BackColor2   = Color.White;
            this.appearanceObject2.ForeColor    = Color.Navy;
            this.appearanceObject2.GradientMode = LinearGradientMode.Vertical;

            this.connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=nwind.mdb");

            this.gridControl.LayoutStyle                    = LayoutViewStyle.SingleRecordView;
            this.gridControl.OptionsView.MinRowAutoHeight   = 25;
            this.gridControl.RowHeaderWidth                 = 50;
            this.gridControl.RecordWidth                    = 150;
            this.gridControl.OptionsBehavior.DragRowHeaders = true;
            this.gridControl.OptionsBehavior.Editable       = false;

            #region 일반 카테고리 행을 설정한다.

            CategoryRow generalCategoryRow = new CategoryRow();

            generalCategoryRow.Name               = "generalCategoryRow";
            generalCategoryRow.Properties.Caption = "일반";

            this.gridControl.Rows.Add(generalCategoryRow);

            #endregion
                #region 주문 ID 에디터 행을 설정한다.

                EditorRow orderIDEditorRow = new EditorRow();

                orderIDEditorRow.Name                 = "orderIDEditorRow";
                orderIDEditorRow.Properties.Caption   = "주문 ID";
                orderIDEditorRow.Properties.FieldName = "OrderID";
                orderIDEditorRow.Properties.AllowEdit = false;

                generalCategoryRow.ChildRows.Add(orderIDEditorRow);

                #endregion
                #region 고객 ID 에디터 행을 설정한다.

                EditorRow customerIDEditorRow = new EditorRow();

                customerIDEditorRow.Name                 = "customerIDEditorRow";
                customerIDEditorRow.Properties.Caption   = "고객 ID";
                customerIDEditorRow.Properties.FieldName = "CustomerID";
                customerIDEditorRow.Properties.AllowEdit = false;

                generalCategoryRow.ChildRows.Add(customerIDEditorRow);

                #endregion
                #region 직원 ID 에디터 행을 설정한다.

                EditorRow employeeIDEditorRow = new EditorRow();

                employeeIDEditorRow.Name                 = "employeeIDEditorRow";
                employeeIDEditorRow.Properties.Caption   = "직원 ID";
                employeeIDEditorRow.Properties.FieldName = "EmployeeID";
                employeeIDEditorRow.Properties.AllowEdit = false;

                generalCategoryRow.ChildRows.Add(employeeIDEditorRow);

                #endregion
                #region 요청일 에디터 행을 설정한다.

                EditorRow requiredDateEditorRow = new EditorRow();

                requiredDateEditorRow.Name                 = "requiredDateEditorRow";
                requiredDateEditorRow.Properties.Caption   = "요청일";
                requiredDateEditorRow.Properties.FieldName = "RequiredDate";
                requiredDateEditorRow.Properties.AllowEdit = false;

                generalCategoryRow.ChildRows.Add(requiredDateEditorRow);

                #endregion
                #region 선적일 에디터 행을 설정한다.

                EditorRow shippedDateEditorRow = new EditorRow();

                shippedDateEditorRow.Name                 = "shippedDateEditorRow";
                shippedDateEditorRow.Properties.Caption   = "선적일";
                shippedDateEditorRow.Properties.FieldName = "ShippedDate";
                shippedDateEditorRow.Properties.AllowEdit = false;

                generalCategoryRow.ChildRows.Add(shippedDateEditorRow);

                #endregion
                #region 선적 수단 에디터 행을 설정한다.

                EditorRow shipViaEditorRow = new EditorRow();

                shipViaEditorRow.Name                 = "shipViaEditorRow";
                shipViaEditorRow.Properties.Caption   = "선적 수단";
                shipViaEditorRow.Properties.FieldName = "ShipVia";
                shipViaEditorRow.Properties.AllowEdit = false;

                generalCategoryRow.ChildRows.Add(shipViaEditorRow);

                #endregion
            #region 선적 카테고리 행을 설정한다.

            CategoryRow shipCategoryRow = new CategoryRow();

            shipCategoryRow.Name               = "shipCategoryRow";
            shipCategoryRow.Properties.Caption = "선적";

            this.gridControl.Rows.Add(shipCategoryRow);

            #endregion
                #region 선적명 에디터 행을 설정한다.

                EditorRow shipNameEditorRow = new EditorRow();

                shipNameEditorRow.Name                 = "shipNameEditorRow";
                shipNameEditorRow.Properties.Caption   = "선적명";
                shipNameEditorRow.Properties.FieldName = "ShipName";
                shipNameEditorRow.Properties.AllowEdit = false;

                shipCategoryRow.ChildRows.Add(shipNameEditorRow);

                #endregion
                #region 선적 우편 번호 에디터 행을 설정한다.

                EditorRow shipPostalCodeEditorRow = new EditorRow();

                shipPostalCodeEditorRow.Name                 = "shipPostalCodeEditorRow";
                shipPostalCodeEditorRow.Properties.Caption   = "선적 우편 번호";
                shipPostalCodeEditorRow.Properties.FieldName = "ShipPostalCode";
                shipPostalCodeEditorRow.Properties.AllowEdit = false;

                shipCategoryRow.ChildRows.Add(shipPostalCodeEditorRow);

                #endregion
                #region 선적 주소 멀티 에디터 행을 설정한다.

                MultiEditorRow shipAddressMultiEditorRow = new MultiEditorRow();

                shipAddressMultiEditorRow.Name          = "shipAddressMultiEditorRow";
                shipAddressMultiEditorRow.SeparatorKind = SeparatorKind.VertLine;

                shipCategoryRow.ChildRows.Add(shipAddressMultiEditorRow);

                #endregion
                    #region 선적 국가 멀티 에디터 행 속성을 설정한다.

                    MultiEditorRowProperties shipCountryMultiEditorRowProperties = new MultiEditorRowProperties();

                    shipCountryMultiEditorRowProperties.Name      = "shipCountryMultiEditorRowProperties";
                    shipCountryMultiEditorRowProperties.CellWidth = 25;
                    shipCountryMultiEditorRowProperties.Caption   = "국가";
                    shipCountryMultiEditorRowProperties.FieldName = "ShipCountry";

                    shipAddressMultiEditorRow.PropertiesCollection.Add(shipCountryMultiEditorRowProperties);

                    #endregion
                    #region 선적 도시 멀티 에디터 행 속성을 설정한다.

                    MultiEditorRowProperties shipCityMultiEditorRowProperties = new MultiEditorRowProperties();

                    shipCityMultiEditorRowProperties.Name      = "shipCityMultiEditorRowProperties";
                    shipCityMultiEditorRowProperties.CellWidth = 25;
                    shipCityMultiEditorRowProperties.Caption   = "도시";
                    shipCityMultiEditorRowProperties.FieldName = "ShipCity";

                    shipAddressMultiEditorRow.PropertiesCollection.Add(shipCityMultiEditorRowProperties);

                    #endregion

            this.gridControl.DataSource = Order.GetOrderList(this.connection);

            this.gridControl.BestFit();

            this.gridControl.CustomDrawRowHeaderCell   += gridControl_CustomDrawRowHeaderCell;
            this.gridControl.CustomDrawRowHeaderIndent += gridControl_CustomDrawRowHeaderIndent;
        }

        #endregion

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method
        ////////////////////////////////////////////////////////////////////////////////////////// Private

        #region 그리드 컨트롤 행 헤더 셀 커스텀 그리기 - gridControl_CustomDrawRowHeaderCell(sender, e)

        /// <summary>
        /// 그리드 컨트롤 행 헤더 셀 커스텀 그리기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void gridControl_CustomDrawRowHeaderCell(object sender, CustomDrawRowHeaderCellEventArgs e)
        {
            if(e.Row.Name == "shipAddressMultiEditorRow")
            {
                if(e.CellIndex == 0)
                {
                    e.Appearance.Assign(this.appearanceObject1);
                }
                else
                {
                    e.Appearance.Assign(this.appearanceObject2);
                }
            }
        }

        #endregion
        #region 그리드 컨트롤 행 헤더 들여쓰기 커스텀 그리기 - gridControl_CustomDrawRowHeaderIndent(sender, e)

        /// <summary>
        /// 그리드 컨트롤 행 헤더 들여쓰기 커스텀 그리기
        /// </summary>
        /// <param name="sender">이벤트 발생자</param>
        /// <param name="e">이벤트 인자</param>
        private void gridControl_CustomDrawRowHeaderIndent(object sender, CustomDrawRowHeaderIndentEventArgs e)
        {
            if(e.Row.Name == "shipAddressMultiEditorRow")
            {
                e.Appearance.Assign(this.appearanceObject1);
            }
        }

        #endregion
    }
}
728x90
반응형
그리드형

'DevExpress > WinForm' 카테고리의 다른 글

[DEVEXPRESS/WINFORM] RowProperties 클래스 : Format 속성을 사용해 값 포맷하기  (0) 2020.05.02
[DEVEXPRESS/WINFORM] VGridControl 클래스 : BeginUpdate/EndUpdate 메소드를 사용해 일괄 수정하기  (0) 2020.05.02
[DEVEXPRESS/WINFORM] VGridControl 클래스 : CalcHitInfo 메소드를 사용해 히트 정보 구하기  (0) 2020.05.02
[DEVEXPRESS/WINFORM] VGridControl 클래스 : CustomDrawRowHeaderCell 이벤트를 사용해 투명 행 헤더 커스텀 그리기  (0) 2020.05.02
[DEVEXPRESS/WINFORM] VGridControl 클래스 : Appearance 속성을 사용해 알파 블렌딩 설정하기  (0) 2020.05.02
[DEVEXPRESS/WINFORM] VGridControl 클래스 : CustomDrawRowHeaderCell/CustomDrawRowHeaderIndent 이벤트를 사용해 행 헤더 스타일 설정하기  (0) 2020.05.01
[DEVEXPRESS/WINFORM] VGridControl 클래스 : CustomDrawRowValueCell 이벤트를 사용해 행 값 셀 커스텀 그리기  (0) 2020.05.01
[DEVEXPRESS/WINFORM] VGridControl 클래스 : CustomDrawTreeButton 이벤트를 사용해 트리 버튼 커스텀 그리기  (0) 2020.05.01
[DEVEXPRESS/WINFORM] VGridControl 클래스 : CustomDrawRowHeaderCell/CustomDrawRowHeaderIndent 이벤트를 사용해 행 헤더 스타일 설정하기  (0) 2020.05.01
[DEVEXPRESS/WINFORM] VGridControl 클래스 : RecordCellStyle 이벤트를 사용해 레코드 셀 스타일 설정하기  (0) 2020.05.01
[DEVEXPRESS/WINFORM] XAppearances 클래스 : LoadScheme 메소드를 사용해 사전 정의된 스타일 체계 설정하기  (0) 2020.05.01
Posted by 사용자 icodebroker

댓글을 달아 주세요