Winforms원폼 C1FlexGrid - 행, 열, 유닛 셀의 자유로운 작성
페이지 정보
작성자 GrapeCity 작성일 2020-09-18 13:48 조회 2,185회 댓글 0건본문
첨부파일
관련링크
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의 행, 열, 유닛 셀의 작성에 성공했습니다.
결과는 다음 그림과 같습니다. :
댓글목록
등록된 댓글이 없습니다.