|
현재 Frame을 다른 Compoent 처럼 만들어서 ToolPalette에 등록해서 프로젝트 하고 있습니다.
현재 제가 이 방법은 사용하고 있기는 합니다만..
C++Builder에서 정식적으로 지원하는것인지는 모르겠네요..
다음에 시간날때 제대로 한번 정리해서 올리도록 하겠습니다만 ..
간단히 설명하면 다음과 같습니다.
1. 일단 File->New->Frame 을 선택해서
필요하신 Design및 코딩을 완료합니다.
(이미 마무리 하셨죠?)
2. 그 위 코드와는 별개로
메뉴 -> Component -> New Component 에서요
Ancestor type 에 TFrame을 선택하시구..
Class Name은 알아서..
그렇게 해서 Component를 만들수 있는 기본 Source구조를 만듭니다.
3. 자 이제 두개의 유닛을 잘 좁합해서 합치면 됩니다.
첫번째 유닛 코드에 핵심은
- xxx.dfm 파일 및 전체 소스 , 그리고 xxx.cpp 의 #pragma resource "*.dfm" 라는 키워드 입니다.
두번째 유닛의 핵심은
- xxx2.h 에서 class선언시에 PACKAGE 라는 키워드이구요
- xxx3.cpp에서는 Component등록에 필요한 ValidCtrCheck 함수와 Resister함수이겟죠
그냥 첫번째 유닛에다가 두번째유닛의 필요한 부분만 복사하세요
PACKAGE와
ValidCtrCheck 함수 , Resister함수 ..
4. 마지막으로 xxx.cpp의 맨 위에
#include <vcl.h> 라고 되어있는데...
이놈을 #incluce <basepch.h>로 바꾸세요
vcl.h 로 해도 compile되고 install되는데 파렛트에 등록된 컨트롤을 Form위에 올려놓으려면 이상하게
에러가 나더라구요(가끔 안날때로 있구.. BCB버젼에 따라 다르기도 하구..)
5. 여튼 위와같이 모두 완료하셨으면...
다른 Component 만들듯이 Package에 유닛을 포함해서 install하시면 됩니다.
프로젝트에서 사용할때는 일반 control처럼 쓰면 됩니다만
문론 ***.h는 include해야 하니까 path에 있어야 하구
***.dfm을 컴파일옵션에 따라 찾는경우가 있더군요
현재 프로젝트에 이 방법으로 Control 을 만들어서 사용하고 있습니다만
이론적인 검증과 충분한 테스트가 되지는 않아서(저말고 렇게 쓰느 사람을 아직 본적이 없네요)
장담해서 얘기하기는 좀 그렇습니다.
그럼...
이용태 님이 쓰신 글 :
: 프로그램 구조가 다음과 같습니다.
: -------------------------------------
: FormMain
: |
: FrameA, FrameB, FrameC <-- TFrame 입니다.
: --------------------------------------
: FormMain에 동적으로 FrameA, FrameB, FrameC를 생성해서 사용하고 있습니다.
:
: 각각의 Frame안에는 버튼이나 차트나 기타 여러개 컴포넌트 및 코딩이 되어 있습니다.
:
: 이 Frame들은 이미 기능구현이 끝난것이어서... 이것을 DLL이나 BPL로 만들어서 해당 기능들을 사용하고 싶습니다.
:
: 프레임 전체를 DLL이나 BPL로 어떻게 만들 수 있을까요?
:
: 답변 부탁드립니다.
|