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
[64409] Re:콤포넌트 만드는중 막히는부분이있어서요
[] 969 읽음    2011-05-22 16:27
빌더로쓰자 님이 쓰신 글 :
:
: 이벤트 부분에서 막히는데요 
: 인스펙터에 있는이벤트에서 OnKeyDown 이벤트를쓸때보면
: void __fastcall Form1::OnKeyDown(TObject *Sender, char &Key,TShiftState Shift)
: {
: ;;
: }
: 이렇게 핸들러가 생기자나요 
: 콤포넌트에 이벤트를 만들때
: typedef void (__closure *TKeyBoardEvent)(ststem::classes::TObject *Sender, char &Key,TShiftState Shift);
: 이렇게 콤포넌트 클래스밖에 정의해두고 위선언이 제대로맞다치구요;
: 클래스안에
: TKeyBoardEvent FKeyDown;
: 이렇게 선언해둔뒤에
: 퍼블리시드에
: __property TKeyBoardEvent OnKeyDown = {read=FKeyDown,write=FKeyDown};
: 이렇게 하고 컴파일하고 설치하면 이벤트에뜨긴 뜨자나요?
: 그런데 문제는 저렇게 해둔다고해서 해당이벤트가 실행되지는 않자나요
: 
: 제가 알고싶은거는 Key 함수에 키메세지가 들어가도록하고싶거든요
: 핸들러장석하면 Key 메시지에서 특정키가눌러지면 함수를 실행하도록 하는거거든요
: 물론 다른함수에 다른행동 일수도있구요
: 
: Key함수에 키메세지가 들어가도록 하고싶은데요 예적으로
: 메세지맵으로하는걸보면 MESSAGE_HANDLER(WM_USER+1,TMessage,FKeyDown)
: 이렇게하면 안될거같은느낌이들거든요 
: 직접 dispatch 함수를 직접 오버라이딩해야하는건가요?
: 오버라이딩해야 한다면 어떻게 해야되는지 알고싶어요
: Shift 함수에도 해당 메세지가 들어가야되고 Key 에도 해당 키메세지가 들어가있어야되는데
: 어떻게 해야될지를 모르겠어요 ㅜ.ㅜ
: 


컴포넌트의 상위 클래스에 TWinControl 처럼 OnKeyDown 프로퍼티와 KeyDown 메서드가 있고 작동한다면 KeyDown 메서드를 오버라이딩하면 됩니다.
그렇지 않으면 메시지맵을 작성하고 TWinControl에 있는 것처럼 OnKeyDown 프로퍼티, KeyDown 메서드 등등을 직접 작성해야 합니다.
자세한 내용은 Controls.hpp와 Controls.pas 파일에 있는 TWinControl 클래스 부분을 보면 알 수 있습니다.

+ -

관련 글 리스트
64406 콤포넌트 만드는중 막히는부분이있어서요 빌더로쓰자 913 2011/05/21
64409     Re:콤포넌트 만드는중 막히는부분이있어서요 969 2011/05/22
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.