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

C++빌더 Q&A
C++Builder Programming Q&A
[483] [답변] KSWJSEKA/ 빌더 / 이미지 컴포넌트/프포
박지훈.임프 [cbuilder] 5200 읽음    1998-08-04 02:27
안녕하세요. 천리안 프로그래머 포럼 C++Builder 담당자 임펠리테리입니다.

보여주신 코드가 실제로 문제가 생긴 그대로의 코드라면, 문제는 Parent 프로퍼티를

지정하지 않아서입니다. 동적으로 컨트롤이 화면에 실제로 나타나기 위해서는 생성한

직후 먼저 Parent 프로퍼티부터 지정을 해주셔야 합니다.

Parent 프로퍼티는 컨트롤이 실제로 나타날 윈도우 컨트롤을 지정하는 것으로, 반드시

TWinControl에서 상속받은 컨트롤의 객체를 지정해야 합니다. 디자인타임에는 화면에

서 폼 디자이너에 컨트롤을 배치함으로서 Parent 프로퍼티가 자동으로 결정되지만,

런타임에서 동적으로 컨트롤을 생성할때는 어느 윈도우컨트롤을 Parent로 할것인지를

반드시 지정해줘야 하죠. 이것은 Left, Top 등의 그외의 프로퍼티를 지정하기 전에,

즉 컨트롤을 생성한 직후에 해야 합니다. 그리고 보여주신 코드를 보면 Visible 프로

퍼티를 먼저 지정한 후에 위치관련 프로퍼티를 지정한걸로 되있는데, 크게 상관은 없

지만 Visible 속성은 위치 속성을 지정한 이후에 지정하는 것이 좋습니다. 왜냐면

Visible이 true인 상태에선 위치관계 프로퍼티들을 수정할때마다 화면에 다시 그리기

때문이죠. 또.. 보여주신 소스에선 생성후에 이미지를 delete한 것으로 되어 있는데,

이렇게 해도 이미지는 화면에 나타나지 않습니다. 정확히 말하면, 아주 잠깐 나타났

다가 사라지겠죠. 이미지 객체를 삭제하는 루틴은 당연히 다른 어떤 이벤트 핸들러

함수에 넣어야겠죠? 그렇게 하려면 Image1이란 포인터 값을 저장할 수 있어야 하고,

그러면 당연히 Image1은 이 함수에서 함께 선언되는 것이 아니라 여러 함수들이 함께

참조 할 수 있도록 전역적으로 선언되어야 합니다. 일반적으론 이미 전역적으로 선언

되어 있는 폼 객체의 클래스의 멤버로 넣죠. 현재 작업중인 폼이 TForm1 클래스라면

TForm1의 헤더화일중 public: 지시자 다음의 어딘가에

TImage *Image1;

와 같이 선언하는 것이 좋겠죠?

그럼, 도움되시길 바라면서, 이만....




독립문에서 임펠리테리였습니다.

(cbuilder, skyhi18)



+ -

관련 글 리스트
483 [답변] KSWJSEKA/ 빌더 / 이미지 컴포넌트/프포 박지훈.임프 5200 1998/08/04
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.