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

델파이 Q&A
Delphi Programming Q&A
[7801] Re:[질문] 컴포넌트 제작에 관련된..... 질문
박정모 [] 797 읽음    2001-12-24 19:22


TDBGrid를 Double click 하면 Column리스트가 나오는건 아시죠? 그 Column리스트위에 있는
각각의 Column은 TColumn의 object입니다.

TColumn에 대한 help를 보면 TObject -> TPersistent -> TCollectionItem -> TColumn
의 상속관계를 가지는 것을 알 수 있습니다. 그러니까 TColumn은 TComponent를 조상으로 하지
않죠. TColumn은 Form위에 올릴 수 없습니다. 그 이유는 Form위에 올리기 위해서는 반드시
조상을 TComponent으로 해야 하기 때문입니다.

님께서 말씀하신 TToolBar의 각 단추는 TComponent를 조상으로 하지 않습니다. 아마도,
TCollectionItem을 조상으로 한 Item일 것 입니다.

TCollectionItem을 조상으로 하는 class는 스스로 graphical로 화면에 표현되지 못합니다.
TCollectionItem은 TCollection의 한 Item이 되며 이 TCollection을 소유한 class는
일반적으로 TComponent를 조상으로 하면서 TCollectionItem을 화면에 직접 그립니다.

그러니까, TCollectionItem, TCollection을 소유하고 있는, TComponent를 조상으로 하는
class가 직접 그 Item을 화면에 그린다는 얘기죠.

도움이 되셨는지... ^^


찌요리~~ 님이 쓰신 글 :
: TPageControl 과 TToolBar 컨트롤에 각 각 TTabSheet, TToolButton 을 만들고
:
: Object Treeview 윈도우를 보면, 다른 컨트롤 과는 약간 틀린점이 보입니다
:
: TabSheet1,TabeSheet2.. 혹은 ToolBar1,ToolBar2.. 등이 반투명한 흐린색으로
:
: 표시되죠. 그리고 이것들은 Copy&Paste 가 안되는 넘들입니다.
:
: ( 이거 아무렇지 않게 보여두 실제 컴포넌트 만들때 보니깐 요상한 겁니다. ㅡ_ㅡ;; )
:
:
: 그럼 본론으로 들어가서, 위에꺼랑 비슷하게 만들려고 하는 컴포넌트가 있습니다.
:
: 컴포넌트 만들때 컴포넌트 에디터를 하나 만듭니다. 거기에 Verb하나를 추가하구요
:
: 거기다 IDesigner.CreateComponent 함수를 이용해서 IDE가 컴포넌트를 생성하도록 만들죠
:
: 일반적인 방법이긴 한데.... 문제는 위에꺼처럼 흐린색으로 표시가 안됩니다.
:
: 만들려구 하는 컴포넌트가 TPanel1 그리고 TTabSheet처럼 TPanel1에만 올라가는
:
: 컴포넌트가 TInplace 라구 하면 TInplace가 Copy&Paste가 되버리는 사태가 발생합니다.
:
: 음... 예를 들어 아래와 같은 코드가 있다면, (설명이 위에껄루 충분하긴 한데...쩝.. ㅡ_ㅡ)
:
: 부분 부분만 발췌해서 올립니다.
:
:
: ////////////////////////////////////////////////////////////////////
: unit  Panel1;
: {중략..}
:
:   TInplace = class(TPanel)
:   public
:     constructor Create(AOwner: TComponent); override;
:   end;
:
:   TPanel1 = class(TPanel)
:   private
:     FInplaces: TList;
:     function GetInplaces(Index: Integer): TInplace;
:   public
:     constructor Create(AOwner: TComponent); override;
:     destructor  Destroy; override;
:      procedure Add(Inplace: TInplace);
:     property Inplaces[Index: Integer]: TInplace read GetInplaces;
:   end;
:
: procedure TPanel1.Add(Inplace: TInplace);
: begin
:   FInplaces.Add(Inplace);
:   Inplace.Parent := Self;
:   Inplace.Visible : = True;
: end;
:
: //////////////////////////////////////////////////////////////////
: unit RegPanel1;
:
: {중략..}
:
: procedure TPanel1Editor.ExecuteVerb(Index: Integer);
: var
:   NewComponent: TComponent;
: begin
:   case Index of
:   0:  begin
:         if not Designer.IsSourceReadOnly then
:         begin
:           NewComponent := Designer.CreateComponent(TInplace, nil, -1, -1, -1, -1);
:            TPanel1(Component).Add(TInplace(NewComponent));
:         end;
:       end;
:   1:  begin
:
:       end;
:   end;
: end;
: {중략... }
:
: ////////////////////////////////////////////////////////////////////////
:
: 폼 디자인시 위의 함수가 실행되게쪄?
: 그러면 Panel1 위에 Inplace1 이 살짝 올라갑니다~~~~ (여기까진 넘 쉬우니깐..히~~~ ^^)
: 근데... Inplace1에서 (Ctrl + X) 키를 누르고,
: 폼위에서 (Ctrl+V) 키를 누르면?
:
: 폼위에 Inplace1이 올라갑니다  ( ㅡ_ㅡ;;; 커헉~~~~ ) 리드 온리가 안되여
: Obejct Treeview 에 반투명하게 보이게 컴포넌트 생성하는 방법이 있나영?
:
:
: ( 질문이 넘 길었군여... 읽어주셔서 감사 ^_____________^
:   가능하면 답변두 부탁드려영~~~~ )
:
:


+ -

관련 글 리스트
7798 [질문] 컴포넌트 제작에 관련된..... 질문 찌요리~~ 708 2001/12/24
7801     Re:[질문] 컴포넌트 제작에 관련된..... 질문 박정모 797 2001/12/24
7810         Re:Re:[질문] 컴포넌트 제작에 관련된..... 질문 찌요리~~ 738 2001/12/26
7818             포기 포기~~~~ 찌요리~~ 569 2001/12/27
7816             엄... 너무 어려워요... ㅠㅠ;; 박정모 664 2001/12/26
7832                 [자답] 드뎌 알아버렸씀다~~~ 홍홍홍 찌요리~~ 804 2001/12/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.