C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

컴포넌트/라이브러리
Delphi/C++Builder Programming Components&Libraries
[439] ImpStringGrid 0.10 (연합 세미나 자료)
박지훈.임프 [cbuilder] 13774 읽음    2006-02-10 04:31
demo.gif 34.2KB 간단한 데모 화면
지난해 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++빌더와 델파이용 두개 프로젝트가 들어있습니다.

이 컴포넌트의 저작권은 당근 제게 있습니다만, 상용이든 어떤 프로젝트이든 자유롭게 사용하실 수 있습니다.
(뭐 굳이 제한할 정도의 대단한 컴포넌트도 아닙니다만.. --;;)
단, 저 이외의 누구도 수정한 소스를 배포할 권한을 가질 수 없습니다. 특히, 컴포넌트 이름을 바꿔서 자신이 제작자라고
주장하며 재배포하는 행위는 절대로 안됩니다. (예전에 실제로 그런 일을 겪었습니다)
수정 후 허용되는 배포의 범위는, 회사 개발팀 내부 등 일반적으로 충분히 비공개적이라고 인정될 수 있는 경우에 한해서
입니다.

그럼...
크레브 [kkol]   2006-02-10 08:13 X
요즘 기본 StringGrid가 너무 부실해서 AdvStringGrid 가지고 작업하고 있는데.. 임프님 만들걸 써도 될거 같군요. ^^
zepirox [zepirox]   2006-02-10 13:04 X
bpk 파일을 설치하려고 했더니 아래와 같은 에러가 나옵니다.. 제가 뭘 잘못 했는지...
올리신 파일에 inc 파일을 찾아보니 없네요...
[Pascal Fatal Error] ImpGridReg.pas(3): File not found: 'ImpCompilerDefines.inc'
[Linker Fatal Error] Fatal: Unable to open file 'IMPGRIDREG.OBJ'

가 나오네요...
zepirox [zepirox]   2006-02-10 13:04 X
참고로 C builder 6을 쓰고 있습니다.
박지훈.임프 [cbuilder]   2006-02-10 18:05 X
깜빡했네요. 죄송...
압축파일에 ImpCompilerDefines.inc 파일을 추가해서 새로 올렸습니다.
zepirox [zepirox]   2006-02-10 20:04 X
감사합니다.
근데 이번에는 imp.dcr 파일이 없다고 나오네요... T.T
다시 올려주시면 안될까요?
박지훈.임프 [cbuilder]   2006-02-10 20:10 X
헉! 죄송.
Imp.dcr은 해당 패키지에는 전혀 필요가 없는 파일입니다.
그냥 그 라인은 삭제하시면 되고요.
혼란을 막기 위해 수정한 파일도 다시 올렸습니다.
zepirox [zepirox]   2006-02-10 20:17 X
감사합니다.
답변이 바로 올려주시는 군요...
정말 감사드려요..
그럼 ...
용이... [park6394]   2006-02-13 09:38 X
감사합니다...빨리 올라달라고 열심히 졸랐으니...열심히 분석해 보겠습니다...
또 귀찮게 해 드릴지도....무지 감사합니다...
박지훈.임프 [cbuilder]   2006-02-28 14:22 X
Options에 goRowSelect를 선택하면 에러가 발생합니다.
zepirox 님께서 알려주셨습니다.

다음 글을 보시고 소스를 수정해주세요.
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=43860
★래미★ [jackey9]   2006-11-02 14:58 X
감사합니다 잘쓰겠습니다 __)
박지훈.임프 [cbuilder]   2007-03-20 03:37 X
BDS 2006에서 설치 가능한 패키지를 포함해서 다시 올렸습니다.
(컴포넌트 소스 자체는 전혀 변경이 없습니다)
박지훈.임프 [cbuilder]   2007-03-20 03:43 X
참, 소스가 전혀 변경이 없는 건 아니고, 위에서 소스 수정해야 하는 부분은 수정해서 올렸습니다.
이윤관 [younkwan]   2016-01-26 10:11 X
bpk를 open해서 컴파일 하니까 에러가 뜹니다.
Unable to open file "C:\Program\ImpGrid.bpi"
에러가 뜨네요...
제가 초보라서 어떻게 해야하나요?
BCB 6 사용하고 있습니다.

+ -

관련 글 리스트
439 ImpStringGrid 0.10 (연합 세미나 자료) 박지훈.임프 13774 2006/02/10
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.