트레이닝 센터

데이터 상호작용

C1FlexGrid의 강화된 조정 기능 체험: 행, 열, 유닛 셀의 자유로운 작성

ComponentOne WinForms 표 양식 컨트롤을 사용하는 FlexGrid는 많은 제작 기능을 제품에 담아 응용시스템을 자유롭게 조정할 수 있습니다. 예를 들어 열 너비 조정, 행 높이 조정, 셀프 어댑팅 최상의 열 너비, 셀프 어댑팅 최상의 행 높이로 푸시 창을 통해 선택하는 유닛 셀의 데이터, 가시화 일자 컨트롤이나 컴퓨터 컨트롤을 통해 지정한 유닛 셀의 값 등의 기능을 구현할 수 있습니다.


본편에서는 FlexGrid유닛 셀 유형을 어떻게 설정하는지 설명합니다. FlexGrid은 체크박스, 드롭 다운 리스트, 버튼, 마스크, 캘린더 및 자체정의 유닛 셀 유형을 지원합니다. 그리고 자유롭게 행, 열, 유닛 셀을 지원합니다.


1. 자체정의 FlexGrid의 각각 다른 데이터 유형

자체정의 FlexGrid기초유형 UITypEditor:

UITypeEditorControl가 ComboBox, IServiceProvider, IWindowsFormsEditorService의 포트를 사용하는 것은 다른 데이터유형의 기초가 됩니다. 상속관계는 다음과 같습니다. :

#region ** UITypeEditorControl (base class for all of the controls below)
    /// <summary>
    /// UITypeEditorControl
    /// </summary>
    public class UITypeEditorControl :
        ComboBox,
        IServiceProvider,
        IWindowsFormsEditorService
    {
    }
    #endregion

자체정의 FlexGrid의CheckListEditor데이터유형:

상기 UITypeEditorControl에서 파생되어 드롭 다운 가능한 체크박스 리스트를 만들 수 있습니다. 사용자는 하나 또는 여러 개를 선택할 수 있고, 임의의 구성을 선택할 수 있습니다. 그림과 같이 표시됩니다. :



해당 유형의 정의는 다음의 코드와 같습니다. 구체적인 코드의 실현은 글 끝의Demo의CheckListEditor 유형을 참고할 수 있습니다.


#region ** CheckListEditor
    //
    // CheckListEditor
    // UITypeEditor that can be used to edit items in CheckedListBox control.
    // Users can check any combination.
    // 
    public class CheckListEditor : UITypeEditor
    #endregion

자체정의FlexGrid의FlexHyperlink데이터유형:

상기UITypeEditorControl에서 파생된 드롭 다운 가능한 체크박스 리스트에서 사용자는 하나 또는 여러 개를 선택할 수 있습니다. 결과는 다음 그림과 같습니다. :



해당 유형의 정의는 다음의 코드와 같습니다. 구체적인 코드의 실현은 글 끝의 Demo의FlexHyperlink 유형을 참고할 수 있습니다.


2. 수동추가FlexGrid 의 열 및 데이터유형

본편에서의 FlexGrid는 논 바인딩 모드입니다. 수동으로 열과 데이터를 추가해야 합니다.
먼저 FlexGrid.Cols.Count를 통해 FlexGrid의 열의 개수를 설정합니다. Demo에는 13개가 있습니다.
c1FlexGrid1.Cols.Count = 13 ;
그 다음 Column의DataType을 통해 각 열의 데이터유형을 설정하고 Width속성으로 열 너비를 설정합니다.
설정된 열의 데이터유형은 스텝1의 CheckListEditor입니다,코드는 다음을 참고합니다. :

//Checkbox List column
            Column checkListCol = c1FlexGrid1.Cols[_checkListCol];
            CheckListEditor checkListEditor = new CheckListEditor(new string[] { "덴마크어", "네덜란드어", "영어", "핀란드어", "프랑스어", "독일어", "이탈리아어", "노르웨이어", "폴란드어", "포르투갈어", "스페인어", "스웨덴어" });
            checkListCol.Caption = "체크박스리스트";		
		checkListCol.Editor = new UITypeEditorControl(checkListEditor, false);
            checkListCol.Width = 150;

설정된 열의 데이터유형은 스텝1의 FlexHyperlink입니다. 코드는 다음을 참고합니다. :


//Hyperlink column
            Column hyperlinkCol = c1FlexGrid1.Cols[_hyperlinkCol];

            hyperlinkCol.AllowEditing = true;
            hyperlinkCol.Width = 160;

	hyperlinkCol.Caption = "하이퍼링크";
            hyperlinkCol.ComboList = "...";				
CellStyle cs = c1FlexGrid1.Styles.Add("NewLink");
            cs.Font = new Font(c1FlexGrid1.Font, FontStyle.Underline);
            cs.ForeColor = Color.Blue;
            cs = c1FlexGrid1.Styles.Add("OldLink");
            cs.Font = new Font(c1FlexGrid1.Font, FontStyle.Underline);
            cs.ForeColor = Color.Purple;

3. 수동추가FlexGrid의 유닛 셀 데이터

이미 추가된 열을 바탕으로 이제 FlexGrid에 데이터를 채워주어야 합니다.
먼저, FlexGrid.Rows.Count를 통해 행의 개수를 설정합니다. Demo에는 21개가 있습니다.
c1FlexGrid1.Rows.Count = 21;


그리고 코드를 통해 데이터를 채워나갑니다. 구체적인 코드는 본문 아래에 첨부한 Demo의LoadData방법을 참고해 주시기 바랍니다.
FlexGrid 자체정의 한 CheckListEditor열에 데이터를 채워줍니다. 코드는 다음과 같이 참고해 주시기 바랍니다. :

string languages = "스페인어|독일어|네덜란드어, 프랑스어, 독일어|포르투갈어|영어, 프랑스어|덴마크어|핀란드어, 스웨덴어|프랑스어|독일어|영어|이탈리아어|스페인어|핀란드어, 노르웨이어|폴란드어|포르투갈어|스페인어|스웨덴어|프랑스어, 독일어, 이탈리아어|영어|영어";            
for (int i = 1; i < c1FlexGrid1.Rows.Count; i++)
{           
          //Load checkbox list data
          c1FlexGrid1[i, _checkListCol] = languages.Split('|')[i - 1];
}

FlexGrid 자체정의 한 FlexHyperlink 열에 데이터를 채워줍니다. 코드는 다음을 참고해 주시기 바랍니다. :

//Load hyperlink column
            c1FlexGrid1[1, _hyperlinkCol] = new FlexHyperlink("여행비서", "http://www.turismo.gov.ar/eng/menu.htm");
            c1FlexGrid1[2, _hyperlinkCol] = new FlexHyperlink("오스트리아 대사관", "http://www.austria.org/");
            c1FlexGrid1[3, _hyperlinkCol] = new FlexHyperlink("벨기에여행", "http://www.visitbelgium.com/");
            c1FlexGrid1[4, _hyperlinkCol] = new FlexHyperlink("브라질 - 위키백과", "http://en.wikipedia.org/wiki/Brazil");
            c1FlexGrid1[5, _hyperlinkCol] = new FlexHyperlink("캐나다웹사이트", "http://www.canada.com/");
            c1FlexGrid1[6, _hyperlinkCol] = new FlexHyperlink("덴마크웹사이트", "http://www.denmark.dk/");
            c1FlexGrid1[7, _hyperlinkCol] = new FlexHyperlink("핀란드뉴스", "http://finland.fi/");
            c1FlexGrid1[8, _hyperlinkCol] = new FlexHyperlink("프랑스여행사이트", "http://www.franceguide.com/");
            c1FlexGrid1[9, _hyperlinkCol] = new FlexHyperlink("독일정보사이트", "http://www.germany.info/");
            c1FlexGrid1[10, _hyperlinkCol] = new FlexHyperlink("아일랜드발견", "http://www.discoverireland.ie/");
            c1FlexGrid1[11, _hyperlinkCol] = new FlexHyperlink("이탈리아에 관해", "http://www.state.gov/r/pa/ei/bgn/4033.htm");
            c1FlexGrid1[12, _hyperlinkCol] = new FlexHyperlink("멕시코여행", "http://www.visitmexico.com/");
            c1FlexGrid1[13, _hyperlinkCol] = new FlexHyperlink("노르웨이 웹사이트", "http://www.norway.org/");
            c1FlexGrid1[14, _hyperlinkCol] = new FlexHyperlink("폴란드.pl", "http://www.poland.pl/");
            c1FlexGrid1[15, _hyperlinkCol] = new FlexHyperlink("포르투갈지도", "http://www.portugal-info.net/maps/");
            c1FlexGrid1[16, _hyperlinkCol] = new FlexHyperlink("스페인여행자", "http://www.spain.info/");
            c1FlexGrid1[17, _hyperlinkCol] = new FlexHyperlink("스웨덴여행", "http://www.visitsweden.com/");
            c1FlexGrid1[18, _hyperlinkCol] = new FlexHyperlink("스위스여행", "http://www.about.ch/");
            c1FlexGrid1[19, _hyperlinkCol] = new FlexHyperlink("구글영국", "http://www.google.co.uk/");
            c1FlexGrid1[20, _hyperlinkCol] = new FlexHyperlink("아메리카합중국 - 위키백과", http://en.wikipedia.org/wiki/United_States);

이제 FlexGrid의 행, 열, 유닛 셀의 작성에 성공했습니다. 결과는 다음 그림과 같습니다. :


샘플 다운로드



한국 그레이프시티 공식카페에서 기술지원을 받으실 수 있습니다.
이메일을 통해서도 기술지원을 받으실 수 있습니다.