답변감사드립니다 ^^
저도 동적생성보다 그냥 해서 쓰고싶었는대
class PACKAGE TKListView : public TCustomControl
요런식으로 파생받아서 커스텀컨트롤만드는것이라 폼디자인이 따로없더군요..
어떻게 컨트롤을 올려놓을수있나요??
현재는 2번방법으로 프로그램을 더진행할수는 있을꺼같습니다
답변감사드립니다... 장성호님덕분에 저도 용기를내서 계속 빌더를쓸수가있습니다 ^^
_(__)_
장성호 님이 쓰신 글 :
:
[문제 원인]
: 님께서 TSkinControl을 동적으로 생성하셔서 그런것입니다.
:
: Designtime에 폼위에 올려진 control및 component정보는 xxxx.dfm 파일에 기록됩니다.
: 프로퍼티수정한 정보도 모두 xxx.dfm 에 들어가게 되죠
:
: 하지만 아래 코드처럼 ScrollBar1처럼 동적으로 생성한 Control은 xxx.dfm 파일에 정보자체가 없습니다.
:
: xxx.dfm은 컴파일하면 exe에 리소스로 포함이 되며
:
: Form이 생성될때 리소스에 포함된 xxx.dfm파일을 읽어와서
: 해당 Control을 생성하고 control의 property를 변경해주는것입니다.
:
:
:
해결방법은?
:
방법1. 동적생성하지 않는 방법이있습니다.
: 아래 코드를 보면 VScrollBar 라는 TSkinControl형의 프로퍼티가 있네요
: 내부에서 동적생성하여 쓸거라면 저 프로퍼티가 필요없을것 같은데....
:
: 저렇게 해두면 다른 TSkinControl을 폼위에 올리고 프로퍼티로 설정하면...
: 동적생성한 놈은 쓸모없게 되죠
:
: 동적생성쓰지 말고 그냥 저렇게 프로퍼티로 Form위에 ScrollBar를 올려서 설정하는 방법이 있을것 같습니다.
:
:
방법 2. 프로퍼티에서 VScrollBar같은것은 빼구요
: TSkinControl의 프로퍼티에서 꼭 필요한것을 TKListView의 프로퍼티로 만듭니다.
: read , write 함수에서 내부에 TSkinControl정보를 읽어 return해주거나 , 설정해줘야 겠죠..
:
:
: //동적생성은 그대로 쓰구...
: __fastcall TKListView::TKListView(TComponent* Owner)
: : TCustomControl(Owner)
: {
: ScrollBar1=new TSkinControl(this);
: }
:
: // Header에서는 ...
: TSkinControl *ScrollBar1;
:
: TColor __fastcall GetScrollBarColor()
: {
: return ScrollBar1->Color;
: }
: void __fastcall SetScrollBarColor(TColor clr)
: {
: ScrollBar1->Color=clr;
: }
:
: __published:
: __property TColor ScrollBarColor={read = GetScrollBarColor, write=SetScrollBarColor};
:
:
:
:
: 위와같이 하면 ...
: ScrollBarColor라는 프로퍼티는 TKListView 컨트롤의 프로퍼티가 되어 xxx.dfm에 저장되게 됩니다.
:
: 그럼..
:
:
:
: 강대민 님이 쓰신 글 :
: : (1)
: : __fastcall TKListView::TKListView(TComponent* Owner)
: : : TCustomControl(Owner)
: : {
: : ScrollBar1=new TSkinControl(this);
: : .
: : .
: : .
: : }
: :
: : (2)
: : __published:
: : __property TSkinControl* VScrollBar={read = ScrollBar1, write=ScrollBar1};
: :
: :
: : ---------------------------------------------
: :
: : TKListView라는 컴포넌트를 만들고있습니다 기존에만들어두었던
: :
: : TSkinControl 컨트롤도 내부에 포함시켜 만들려고 위의 소스처럼 생상자에서(2) new 를하고
: :
: : (2)프로퍼티를 다음과같이 설정했습니다...
: :
: : 잘되는듯하는대 문재가 디자인모드에서 VScrollBar의 프로퍼티등 정상적으로 접근과 수정이되는대
: :
: : 막상컴파일해서 실행할때는 적용이 되어있지않내요... 이런경우는 어떻게 해야하나요?
: :
: : 고수님들의 답변 기다리겠습니다..