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
[25951] Re:DoEnter, OnEnter를 못 쓴 이유....
임문환.실업자 [] 865 읽음    2003-06-16 00:57
Kenny 님이 쓰신 글 :
: DoEnter, OnEnter도 시도해 봤었습니다만...
:
: 다음과 같은 현상때문에 이용치 못했습니다.
:
: 일단 먼저 붙여드린 예의 경우 TCustomControl을 상속받은 TPopEdit에는
:
: 어떠한 Control 도 붙어있지 않은 상태이구요.. (InsertControl을 한번도
:
: Call하지 않은 상태입니다.)
:
: 이 상태에서는  DoEnter, OnEnter 모두 작동하지 않습니다.
:
: 만약 InsertControl을 통해 TPopEdit( TCustomControl의 Derive Class의 Instance)
:
: 에.. Child Control들을 포함하게 되면. 해당 Child Control에 Focus가 가게 될때..
:
: TPopEdit의 Overide된 DoEnter가 실행되거나 혹은 OnEnter가 발생합니다.
:
: 역시 TPopEdit의 바닥...(컨트롤이 없는 TPopEdit의 Component영역)을 클릭했을 경우는
:
: Focus가 잡히지 않더군요..
:
: 이때문에 Message를 직접 잡으려 했던건데.... 왜그런지 혹시 아십니까?
:
: ---------------------------------------
: 현재 작성한 에디트 컨트롤은 TCustomControl 을 상속 받아 TScrollBar를 오른쪽과 아래에 붙이고.
:
: 에디트 컨트롤 (TCustomControl을 상속받은 클래스의 인스턴스)의 Canvas에 직접 출력을 하고 있습
:
: 니다. 이 상황에서 말씀하신대로 DoEnter나 OnEnter를 이용하게 되면
:
: 스크롤바에 Focus가 갈때는 에디트 컨트롤의 포커스가 잡히지만..
:
: 글씨가 출력된 에디트컨트롤의 자체영역(Canvas->xx를 통해 출력된 텍스트가 있는 영역)은
:
: 아무리 클릭해도 Focus가 잡히지 않습니다.
:
: ---------------------------------------
:
: Child Control들 말고... 해당 클래스의 Focus가 잡히게 할 방법 없을까요?
:
:
:
:

어짜피 키보드로는 제대로 되니까 마우스만 해결하면 됩니다.
TControl의 Click과 DblClick 메서드를 오버라이드해서 그 메서드 내부에서 SetFocus()를 해주면 되긴하는데 이게 정석인지는 모르겠군요.
(물론, 오버라이드한 메서드 내에서는 TControl의 해당 메서드를 호출해주어야 겠죠).


WM_MOUSEACTIVATE: 
  해당 컨트롤의 영역 내부를 클릭할 때마다 발생
  포함된 컨트롤을 클릭해도 발생

WM_SETFOCUS: 
  해당 컨트롤 자체가 키보드 입력 초점을 얻을 때 발생
  마우스로는 안 됨(키보드로는 가능)

WM_KILLFOCUS:
  해당 컨트롤이 키보드 입력 초점을 잃을 때 발생
  포함된 컨트롤로 키보드 입력 초점이 이동해도 발생
  키보드든 마우스든 상관 없음

DoEnter:
포함된 컨트롤이든 자신이든 키보드 입력 초점을 얻을 때 실행됨
자신인 경우 마우스 클릭으로는 안 됨

DoExit:
키보드 입력 초점을 컨트롤 외부로 빼앗길 때 실행됨
키보드든 마우스든 상관 없음

+ -

관련 글 리스트
25943 [질문] TCustomControl 에서 SetFocus 메시지가 안잡히는데요. Kenny 799 2003/06/15
25944     Re:[질문] TCustomControl 에서 SetFocus 메시지가 안잡히는데요. 임문환.실업자 1103 2003/06/15
25947         DoEnter, OnEnter를 못 쓴 이유.... Kenny 766 2003/06/15
25951             Re:DoEnter, OnEnter를 못 쓴 이유.... 임문환.실업자 865 2003/06/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.