Q&A

  • 고수만... 컴포넌트 제작시 문제점...T.T


판넬위에 TImage와 TShape 컴포넌트로서 새로운 시계 컴포넌트를 만들려구 합니다...^^

Shape는 시계의 동그란 부분을 만들고,

Image에서 시계바늘을 만들어 볼려구합니다.



그래서 생성자에서



constructor TWatch.Create( AOwner: TComponent );

begin

inherited Create( AOwner );

Caption := '';

width := 100;

height := 100;

BevelOuter := bvNone;



// 시계의 Back Ground 는 Shape로....

FWatchBack := TShape.Create( Self );

FWatchBack.Parent := self;

FWatchBack.Align := alClient;

FWatchBack.Shape := stCircle;

FWatchBack.Show;



// 시계의 바늘은 Image 로......

FWatchShow := TImage.Create( Self );

FWatchShow.Parent := self;

FWatchShow.Align := alClient; <- 이게 이상해욤.

FWatchShow.Transparent := true;

end;



이렇게 했는데욤



막상 컴파일해서 만들어보믄 시계 크기가 100,100 디폴트 크기면 딱 맞는데,

디자인 time에서 사이즈를 바꾸믄 Shape는 alClient로 지정되니까

정상적으로 크기가 변하는데,



Image 컴포넌트 이 눔은 꿈쩍두 않합니다.

한대 패주구 싶을 정도로.....T.T



어캐 조져야 시원하게 분풀이를 할수 있을까욤...^^;;;



부탁드립니다.



1  COMMENTS
  • Profile
    한형길 2001.10.16 06:33
    이미지 콤포넌트는 그림크기에 따라 크기가 고정되는 경우가 있죠.

    그래서 몇가지 속성을 조절을 해줘야 함다.

    크기에 따라서 이미지를 줄이고 늘려서 표시해 주는 속성이 있는데 기억이 잘안나네.

    그리고 AutoSize 속성을 False 로 해주고 alClient 보다는 크기가 변할때

    직접 높이와 폭을 조절해 주시면 될거 같군요. Panel 의 OnResize 이벤트에서 직접

    맞춰준다거나 그러면 되겠죠.

    그리고 솔직히 이미지 콤포넌트와 콤포넌트로 하는것보다는 이미지콤포넌트에 그림을

    넣고 그 그림을 StretchBlt 함수로 직접 늘이거나 줄여서 그림을 표시해 주고

    하면서 그 바탕그림위에 시계를 그리고 그럼 더 좋은 것이 될거같군요.



    Faster wrote:

    >

    > 판넬위에 TImage와 TShape 컴포넌트로서 새로운 시계 컴포넌트를 만들려구 합니다...^^

    > Shape는 시계의 동그란 부분을 만들고,

    > Image에서 시계바늘을 만들어 볼려구합니다.

    >

    > 그래서 생성자에서

    >

    > constructor TWatch.Create( AOwner: TComponent );

    > begin

    > inherited Create( AOwner );

    > Caption := '';

    > width := 100;

    > height := 100;

    > BevelOuter := bvNone;

    >

    > // 시계의 Back Ground 는 Shape로....

    > FWatchBack := TShape.Create( Self );

    > FWatchBack.Parent := self;

    > FWatchBack.Align := alClient;

    > FWatchBack.Shape := stCircle;

    > FWatchBack.Show;

    >

    > // 시계의 바늘은 Image 로......

    > FWatchShow := TImage.Create( Self );

    > FWatchShow.Parent := self;

    > FWatchShow.Align := alClient; <- 이게 이상해욤.

    > FWatchShow.Transparent := true;

    > end;

    >

    > 이렇게 했는데욤

    >

    > 막상 컴파일해서 만들어보믄 시계 크기가 100,100 디폴트 크기면 딱 맞는데,

    > 디자인 time에서 사이즈를 바꾸믄 Shape는 alClient로 지정되니까

    > 정상적으로 크기가 변하는데,

    >

    > Image 컴포넌트 이 눔은 꿈쩍두 않합니다.

    > 한대 패주구 싶을 정도로.....T.T

    >

    > 어캐 조져야 시원하게 분풀이를 할수 있을까욤...^^;;;

    >

    > 부탁드립니다.

    >