지난해 11월 29일에 있었던 커뮤니티 연합 세미나에서 제 세션의 주제였던 StringGrid를 상속받은 컴포넌트입니다.
두달이나 늦은 만큼, 기능도 세미나에서 보여드렸던 것보다 좀 더 개선되었습니다.
대략 생각해보니... 기본 TStringGrid에 비해 추가/개선된 기능들은 다음과 같습니다. (더 있을 거 같은데..)
1. 컬럼에디터에서 각 컬럼의 캡션, 너비, 컬러, 정렬, 최대길이 등을 지정할 수 있다.
(컴포넌트 오른쪽클릭->Column Editor 혹은 컴포넌트 더블클릭)
2. 입력할 때 컬럼별로 콤보, 버튼, 체크 등으로 입력 방법을 선택 가능하다.
(콤보/버튼은 C++빌더와 델파이의 6 이상 버전에서만 가능)
3. 폼디자인시에 Cells[] 속성의 스트링 데이터들을 정적으로 폼에 저장할 수 있다.
(컴포넌트 오른쪽클릭->Cells Editor)
4. 상단의 컬럼 헤더를 클릭함으로써 로우들을 정렬(sort)할 수 있다.
(SortByClick 속성을 true로 설정해야 함. 기본적으로 문자열 비교로 정렬하며, 숫자기준 정렬등 별도의 정렬 기준이
필요하다면 컬럼의 OnSortCompare 이벤트 핸들러를 이용)
5. 각 Cell에 여러줄로 입력이 가능하다. (개행을 위해서는 알트+엔터 키)
6. 각 Row의 높이를 충분하도록 자동으로 설정되도록 할 수 있다.
(AutoRowHeights 속성이 true일 때 가능, 최소 높이는 DefaultRowHeight로 설정됨)
7. Cells[] 데이터가 변경될 때 발생하는 OnDataChange 이벤트 추가
8. 이미지리스트를 연결하여 각 컬럼에 아이콘 표시 가능
적어도 당분간은 이 그리드 컴포넌트에 대한 업그레이드는 없을 예정입니다. 이 컴포넌트를 다시 대폭 손질하여 새로운
컴포넌트로 만들 예정이라서 그렇습니다.
현재 이 컴포넌트는 기존에 스트링그리드를 쓰시던 분들을 위해 TStringGrid를 상속받아 만든 것입니다. TCustomGrid나
TDrawGrid 등을 상속받는 것이 더 편하고 확장도 쉽지만 굳이 더 잔손이 많이 가는 TStringGrid를 상속받은 이유는,
단지 현재 프로젝트에 스트링그리드를 사용하는 분들이 별다른 수정 없이 그대로 대체해서 사용하실 수 있는 하위 호환성을
충분히 가질 수 있게 하기 위해서입니다.
수정하여 새로 만들 버전은 TCustomGrid를 상속받아 만들 것이기 때문에 데이터 저장 방식이 TStringGrid와는 다르고,
Cells[]라는 속성은 아예 존재하지 않는 등 기본 스트링그리드와 적지 않게 다릅니다. TCustomGrid를 상속받아 새로
TCustomImpGrid를 만들고 다시 거기서 지금 올린 TImpStringGrid와 비슷한 기능을 가지는 TImpGrid와 데이터베이스에
연결할 수 있는 디비그리드 형태의 그리드를 만들려고 하는 것입니다. (이렇게 하려면 TStringGrid는 여러모로 곤란합니다)
만약 이런 형태의 그리드에 대한 요청이 많으면 새로 만드는 그리드들도 공개하는 것을 고려하겠습니다.
첨부된 자료 파일에는 컴포넌트 자체인 ImpStringGrid.pas와 컴포넌트 에디터 유닛인 ImpStringGridEditor.pas, 그리고
단순히 컴포넌트와 컴포넌트 에디터를 등록하기만 하는 ImpGridReg.pas 세개의 소스 파일이 포함되어 있습니다.
이 파일들을 엮어 컴파일하기 위한 패키지 프로젝트는 델파이용(dpk)과 C++빌더용(bpk) 두가지로 포함시켰습니다.
간단한 데모도 포함되어 있습니다. 데모도 역시 C++빌더와 델파이용 두개 프로젝트가 들어있습니다.
이 컴포넌트의 저작권은 당근 제게 있습니다만, 상용이든 어떤 프로젝트이든 자유롭게 사용하실 수 있습니다.
(뭐 굳이 제한할 정도의 대단한 컴포넌트도 아닙니다만.. --;;)
단, 저 이외의 누구도 수정한 소스를 배포할 권한을 가질 수 없습니다. 특히, 컴포넌트 이름을 바꿔서 자신이 제작자라고
주장하며 재배포하는 행위는 절대로 안됩니다. (예전에 실제로 그런 일을 겪었습니다)
수정 후 허용되는 배포의 범위는, 회사 개발팀 내부 등 일반적으로 충분히 비공개적이라고 인정될 수 있는 경우에 한해서
입니다.
그럼...
|