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
[45443] Re:[수정]컴포넌트 관련 질문 몇가지
박지훈.임프 [cbuilder] 898 읽음    2006-06-26 04:52
말씀하신 대로라면 동작하지 않을 이유가 없습니다. 뭔가 알려주시지 않은 부분이 있거나 생각하시고 계신 것과 달리 실수를 하신 부분이 있을 겁니다. 혹시 KeyDown에서는 원래 함수를 호출해주고 KeyPress 함수를 오버라이드했으면서 원래 함수를 호출해주지 않은 것은 아닌가요.

그리고 이해가 안되는 부분이 있는데, TCustomPanel을 상속받으셨다면서 베이스 클래스의 키 처리 로직을 말씀하시는 것이 이해가 안됩니다. TCustomPanel에는 키 처리 로직이 전혀 없으니까요.

그리고, "다음과 같이 하는게 맞는지 궁금합니다"라고 하셨으니까 추가로 더 말씀드리면요.
일반적으로는, 상속에서는 추측하시는 대로입니다. 하지만 키 입력 관련은 말씀하신 방법이 가장 좋은 방법은 아닙니다.

키의 경우에는 해당 컴포넌트에서만 키를 처리하면 깔끔해지는 것이 아닙니다. 해당 컴포넌트에 키 입력을 했는데 해당 컴포넌트를 포함한 폼에도 입력이 전달되고, 다이얼로그키 등등등 관련하여 엮인 곳이 한두곳이 아닙니다.

따라서 키 입력의 경우에는, 베이스 클래스로 키 입력을 전달하지 않기 위해 상속받은 원래의 함수를 아예 호출하지 않는 것은 좋은 방법이 아닙니다. 금방 발견이 안되겠지만, 예상치 않게 키 관련 동작이 이상하게 돌아가는 경우가 생길 수 있습니다.

그래서, 키 입력의 경우에는 Key = 0 처리를 해버리는 것이 가장 안전합니다. 그래야 그 기반의 VCL 코드들이 정상적으로 작동합니다.

그럼...


김재원 님이 쓰신 글 :
: 1. 컴포넌트를 상속받아 특정 이벤트를 처리한 후(오버라이딩 개념이 맞나요?),
: 상속받은 컴포넌트의 원래 메세지 처리 함수를 호출하고 안하고를 조절하는 방법이 다음과 같이 하는게 맞는지 궁금합니다.
: TCustomPanel을 상속받은 컴포넌트에서 property에 OnKeyDown 이벤트를 추가하여 구현했을 때
: void __fastcall 자식클래스::KeyDown(Word &Key, Classes::TShiftState Shift) {
:     // 여기에 원하는 처리
:
:     ::TWinControl::KeyDown(Key, Shift); // 이 라인을 코딩하면 베이스 클래스의  KeyDown 메시지 헨들러 호출, 없애면 호출 안함?
: }
:
: 위의 베이스 클래스의
: 위와 같이 TCustomPanel을 상속받아 KeyDown 이벤트를 가로챈 후,
: 원하는 처리를 해주고 다시 베이스 클래스의 KeyDown 이벤트 헨들러를 호출했는데도 불구하고
: 원래의 동작이 나타나지 않아서 이렇게 질문 올립니다.
:
:
: 2. A라는 패널위에 B라는 패널을 올렸습니다.
: 이때 A에서 B 영역을 포함한 라인을 그릴려고 합니다. 그냥 A의 canvas에 그리면, B 영역에 가려서 나오지 않는군요..
: 이렇게 자신이 가지는 컴포넌트 위를 포함해서 그리고 싶을 때 어떻게 해야 하는지 알고 싶습니다.
:
: 답변 미리 감사드립니다.

+ -

관련 글 리스트
45427 [수정]컴포넌트 관련 질문 몇가지 김재원 1305 2006/06/24
45443     Re:[수정]컴포넌트 관련 질문 몇가지 박지훈.임프 898 2006/06/26
45459         Re:Re:[수정]컴포넌트 관련 질문 몇가지 김재원 858 2006/06/26
45479             Re:Re:Re:[수정]컴포넌트 관련 질문 몇가지 박지훈.임프 829 2006/06/28
45429     Re:[수정]컴포넌트 관련 질문 몇가지 827 2006/06/24
45431         Re:Re:[수정]컴포넌트 관련 질문 몇가지 김재원 825 2006/06/25
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.