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
[54255] Re:이벤트 관련 질문입니다.
장성호 [nasilso] 1558 읽음    2008-08-07 15:09
Edit1OnClick 메소드가
Edit1 에만 걸려있구 직접 코딩으로 Edit1OnClick를 호출하지 않는다면?

Edit1OnClick 메소드가 호출되기 전에 이미 Edit1은 Focused 되어있습니다.
즉  Edit1->SetFocus()는 아무 의미없는 코드입니다.

마우스 클릭이 아닌 Tab을 클릭해서 Focus를 바꾸거나
코딩으로 Focus를 바꾸면 Edit1OnClick 메소드가 호출되지 않을것이구요

Edit가 Focus  In /  Out  이벤트를 받고 싶다면?

WM_SETFOCUS 와 WM_KILLFOCUS 메세지를 잡아서 처리하시면 됩니다.

WM_SETFOCUS 메세지는 Edit 에게 Focus를 주는 메세지이구
WM_KILLFOCUS 메세지는 그 반대입니다.


메세지를 어떻게 잡냐구요?

- sub-classing으로 하셔도 되구...
- Application의 OnMessage 이벤트 핸들러를 이용하셔도 됩니다.

그럼..

c언어 초보 님이 쓰신 글 :
: 제가 지금 Edit 컨트롤의 포커스에 관한 이벤트를 만들려고 합니다.
: Edit1에 대해 onClick 이벤트가 발생한다면
: void __fastcall Form1::Edit1OnClick(TObject *Sender)
: {
:     Edit1->SetFocause();
: }
: 뭐 대충이렇게 작성하면 될것입니다.
:
: 만약에 Edit1의 포커스가 해제되는 이벤트를 캐치할려면 어떻게 해야 될까요?
: 다른 버튼을 누르거나 다른 이벤트가 발생한다면 분명  Edit1의 포커스는 해제될겁니다.
: 그렇다면 정작
:
: if(Edit1->Focaused == false)
: {
:   ....실행함수()
: }
:
: 위 구문을 어떤 이벤트에 등록하여야 Edit1->Focaused == false를 캐취할 수 있을까요?

+ -

관련 글 리스트
54254 이벤트 관련 질문입니다. c언어 초보 1196 2008/08/07
54255     Re:이벤트 관련 질문입니다. 장성호 1558 2008/08/07
54257         그런 방법이 있었군요. 감사합니다. c언어 초보 1235 2008/08/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.