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

델파이 강좌/문서
Delphi Programming Tutorial&Documents
[105] 기존 콤포넌트를 다른 콤포넌트로 대체하는 방법 Last Part
주정섭 [jjsverylong] 5588 읽음    2006-07-15 11:38
임포스터 클래스를 이용해서 기존 콤포넌트를 다른 콤포넌트로 대체하는 방법을 이전 강좌에서 살펴 보았다. 임포스터 클래스는 기존 콤포넌트를 가장 소스 변동이 적게 갈아치우는 방법이다. 심지어 기존 콤포넌트에서 디자인타임 속성(속성창에서 세팅한 속성값들)들도 그대로 전이된다.

처음 이글을 쓸때의 버전 관리 문제에 대해서 언급해 보자. 델파이는 각 프라젝트마다 유닛 검색 경로를 따로 설정할 수 있다. Project->Options->Directory->Search Path 메뉴를 통해서 각 프라젝트마다 별도의 유닛 경로명을 지정할 수 있는데, 이를 이용하면, 하나의 델파이 IDE에서 버전1, 2, 3 각각의 임포스터 클래스를 사용하는 것은 전혀 문제가 되지 않는다.

임포스터 클래스는 델파이 IDE에 등록되지 않는 순수 소스 라이브러리 형태로 존재하기 때문에, 소스 관리가 월등히 쉬워질 뿐 아니라, 콤포넌트에 비해서 작성하기도 쉽다.

델파이 매뉴얼에 좋은 내용이 많은 것은 사실이나, 오랜 기간을 거치면서 수많은 델파이 고수 선배들이 여러 더 좋은 방법을 찾아내었다. 그중에서, 여러 개발자들이 동의하는 사실 중 하나가, 자신이 만든 클래스를 남한테 팔아먹을 용도가 아니라면, 즉 본인이 콤포넌트 개발 판매자가 아니라면, 쓰잘데없이 여러 클래스를 콤포넌트화해서 패키지로 만들고 델파이 IDE에 등록하지 말라는 것이다.

즉, 혼자만이 쓰는 라이브러리이거나, 동일 팀원간에 공유되는 클래스라면, 대부분의 경우 굳이 콤포넌트를 만들면 더 손해라는 것이다. 콤포넌트의 경우 후일 소스 관리를 더 복잡하게 만드는 경우가 월등히 많기 때문이다.

좀 복잡한 방법이긴 하지만, 하나의 IDE에서 동일 콤포넌트를 두개 이상 다른 버전을 설치할 수 있는 편법이 있긴 하다. 그러나, 그 설정방법이 매우 까다로울 뿐더러, 자칫 실수하기도 무지 쉽다. 따라서 굳이 기존 콤포넌트 소스를 변경한다거나 새로운 콤포넌트를 만들기 보다는, 임포스터 클래스를 고려해 봄이 훨씬 나은 대안이 될 수도 있다.

이번 강좌에서는 임포스터 클래스로 쓰잘데없는 콤포넌트 만드는 것을 줄이는 방법을 알아 보았다. 쪼잔한 콤포넌트 안만들기 방법은 이것말고도 여러가지가 있다.

다른 사람들이 이런 기법에 대한 좋은 글을 또  올려주기를 기대해 보자. 별거 아닌 내용으로 파트 4까지 이끈 이 강좌에 대해서 불만을 가진 분들이 있다면, 더 좋은 방법을 마구 댓글로 달아주기를 바라면서 이 강좌를 맺는다.

개발자들은 서로 잘난체하면서 더 좋은 방법을 풀어 놓을 때 서로 배우는 것이 많다. 단순히 "니 방법은 나쁘다"라기 보다는 더 좋은 방법으로 작성한 소스를 보여주는 잘난체하는 개발자들이 많아야만이, 이 강좌 게시판이 여러 사람들에게 더욱 유익해질 것이다.

더우기,  원래 글을 올린 사람도, 더 좋은 방안을 제시해준 잘난체(?) 하는 사람들 때문에, 배우는 것이 생겼기에 앞으로 더욱 글쓸 보람을 느낄 것이다. 이미 뻔한 내 실력을 강좌로 자랑해봤자 무슨 재미가 있겠는가?
김재철 [babois]   2006-09-08 15:37 X
임포스터인지 뭔지.. 더 간단한 방법이 있는데요.. 클래스 바꿔치기라고 해야하나..
MyEdit.pas 파일에 TEdit클래스에서 상속받은 TMyEdit 클래스를 작성해두고..
uses 절에 MyEdit 추가해줍니다.. 그런담에 type 절에서 Form보다 먼저 TEdit = class(TMyEdit); 이렇게 한줄 넣으면 끝!!!
김재철 [babois]   2006-09-08 15:43 X
유닛 순서나 중복된 TEdit를 헷갈려하지 않아도 되고... 주정섭님의 방법대로 IDE에 컴포넌트를 등록하지 않아도 되고... 마찬가지로 폼내의 모든 TEdit를 변경할 수 있구요..
김재철 [babois]   2006-09-08 15:51 X
주정섭님의 강좌는 잘 읽었습니다.. 무작정 편한방법을 택하는것보다는 근본적인 개념을 잘 이해하는 것이 더 중요하죠.. 무심코 글 읽다보니 잘난체(?)할려고 가입하게 됬네요 ^^;
김재철 [babois]   2006-09-08 16:00 X
태클을 걸긴 했지만 정섭님의 코딩 스타일이나 소스 관리에 대한 의견에는 동감합니다.
주정섭 [jjsverylong]   2006-09-11 14:27 X
김재철씨. 글로는 잘 이해가 안되는데. 실제 소스를 첨부해서 구체적으로 좀 설명해 주시기 바랍니다. 글만으로는 어떤 점이 더 편한다는 것인지 이해가 안되는군요.
김재철 [babois]   2006-09-13 16:43 X
제가 "xx님"이라고 붙여드렸는데.. "xx씨"라는 표현을 보니 약간 당황스럽네요. ^^;;
김재철 [babois]   2006-09-13 16:45 X
팁&트릭 게시판에 소스 및 설명 올려놓았습니다.

+ -

관련 글 리스트
105 기존 콤포넌트를 다른 콤포넌트로 대체하는 방법 Last Part 주정섭 5588 2006/07/15
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.