컨트롤을 생성할때 컨트롤의 Owner을 Control을 생성하는 컴포넌트의 Owner로 지정하였더니
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 300
ClientWidth = 635
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object KPropertiesFrame1: TKPropertiesFrame
Left = 344
Top = 128
Width = 330
Height = 249
TabOrder = 0
TabStop = True
ExplicitLeft = 344
ExplicitTop = 128
end
object TEmptyPanel
Left = 0
Top = 0
Width = 0
Height = 0
TTop = 172950576
end
end
이렇게 나오네요...제가 원하는 것은 KPropertiesFrame1 안에 TEmptyPanel 이 들어가게 하고 싶은데
Owner가 Form1 을 가르키다 보니 저렇게 나오는것 같습니다...
프레임 안에서 동적으로 컨트롤을 생성하더라도 우리가 디자인 타임에서 끌어다 놓듯이 화면에도 보여지고
dfm 파일에도 정상적으로 들어가게 하고 싶습니다!!
아무래도 디자인 타임에서 컨트롤을 끌어다 놓을때 발생하는 함수들을 오버로딩하여 동적으로 컨트롤을 생성할때
실행 하게끔 해주어야 할거 같은데..이부분에서 막막합니다... 어떠한 함수들이 불려지는지 알 수 있는 지요..
아니면 알 수 있는 방법이라도 알려주시면 감사하겠습니다.!
루도라 님이 쓰신 글 :
: 새로 생성되어지는 Control 의 Owner 를 Control 을 생성하는 컴포넌트의 Owner 로 지정해보세요.
:
: procedure TComponentEdit.DoCreateControl;
: begin
: Control := T...Control.Create(Component.Owner);
: Control.Name := Component.Name + 'Control';
: end;
:
: 화면에 나타난다고 하신거 보면 Parent 지정 같은건 제대로 하신거 같은데..
:
: 이원용 님이 쓰신 글 :
: : 컴포넌트를 한개 만들었습니다.
: :
: : 이 컴포넌트는 컴포넌트 에디터를 가지고 있으며
: :
: : 에디터에서 버튼을 누르면 컴포넌트 자체에서 동적으로 control을 생성하며
: :
: : 디자인 화면에서 보여지게 되어있습니다.
: :
: : 그러나 여기서 동적으로 생성된 control은 사용자에게 보여지기는 하나
: :
: : 빌드 후 실행시 실제 프로그램 상에서는 나타나지 않습니다.
: :
: : 왜냐하면 dfm text에는 적용 되지 않기 때문입니다.
: :
: : 저는 동적으로 생성된 control이 dfm text 파일에 적용되는 방법을 알고 싶습니다....
: :
: : 툴 팔레트에서 컨트롤을 끌어다 놓을때 발생하는 함수가 무엇인지 궁금합니다.
: :
: : readState 와 createComponent 함수가지는 알아 냈으나 그다음에 실행되는 함수들이 무엇인지 궁금합니다..
: :
: : 생성된 컨트롤을 dfm text에 나오게 하는 함수를 알려주시면 감사하겠습니다...
: :
: : 부탁드립니다 ㅠㅠ