Q&A

  • Component내에 또 다른 Component를 Visible
여러곳을 뒤지다가...

이곳에 글을 올립니다.



도와주십시요.

TGraphicControl로 부터 상속받아서 새로운 Component를 만들었습니다.

이놈에게 TLabel을 하나 Create시켜서 새로운 Component와 같이 묶여 다니게 하고 싶은겁니다.



다음은 Component source의 create 부분을 간단하게 한겁니다.



constructor TTestShape.Create(AOwner: TComponent);

begin

inherited Create(AOwner);

{ Initialize }

ControlStyle := ControlStyle + [csReplicatable];

Width := 27;

Height := 15;

FTestLabel := TLabel.Create(Self);

FTestLabel.Left := Left+ 10;

FTestLabel.Top := Top + 10;

FTestLabel.Caption := 'TEST';

FTestLabel.Transparent := True;

FTestLabel.visible := True;

FTestLabel.Parent := TWincontrol(AOwner);

end;





1. label의 parent는? 지금 생성하는 Component로 할 수 있습니까?



여기서 FTestLabel의 parent를 설정해 주어야 Create된 Label이 보여지는거 압니다. 그런데 위와 같이 AOwner로 Parent를 하면 TPanel과 같은 Component위에 생성한 TestComponent를 올려 놓으면 Label이 지정한 위치에 표시되지 않고 Form에 그대로 표시 됩니다. panel위에서도, Form위에서도 label을 원하는 위치에 표시하고 싶은데 Component내에서는 자신의 parent를 어떻게 알수 있나요?

위의 source대로 하면 Form위에서는 정상적으로 원하는 위치에 표시가 가능합니다. 그러나 panel위에 Component를 올리면... 안된다는 거지요...

FTestLabel.Parent := self로도 놓아봤는데... 엄청난 Error Dialog Box만 뜨던데.. 뭐가 어떻게 된는건지....

방법좀 가르쳐 주세요..





2. Label이 TTestShape에 의해서 그려진 polygon 위에서 보이지려면?



또하나 생성된 Component가 polygon으로 그려지는데 여기에 label의 Position을 겹치게 놓으면 polygon영역 뒤로 label이 보여집니다. polygon 영역 위로 label을 표시하고 싶은데 어떻게 하지요? 마치 polygon아래에 Label이 숨어있는것 처럼 보이는데 이를 Label이 모두 polygon위에 보이도록 하고 싶습니다.







두가지 질문...

답변 부탁드립니다.

델파이를 사랑하는.... 궁금이였습니다.





0  COMMENTS