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
[1889] Re:[질문]현재 어느 컴포넌트에 포커스가 있을까?
박지훈.임프 [cbuilder] 3234 읽음    1999-09-01 00:00
: 음...
:
: 포커스를 받을 당시에는 OnEnter이벤트를 이용하면 되는걸루 알고 있는데....
:
: 폼위의 많은 컴포넌트들 중에서 어느컴포넌트에 포커스(캐럿)가 있는가를 알고 싶은데...
:
: 어떤 함수를 이용하면 될까요?
:
: 그럼 미리 감사드립니다~~~
:
: 꾸벅~



임펠리테리입니다.

TForm의 ActiveControl 프로퍼티를 사용하면 됩니다. ActiveControl 프로퍼티는
현재 포커스를 갖고 있는 컨트롤의 포인터를 갖고 있습니다. 하지만, 이 프로퍼티는
TWinControl * 형이므로 포커스를 가진 컨트롤이 실제로 어떤 컨트롤인지를 직접
알아낼 수는 없습니다.
다시 말해서, 만약 포커스를 가진 컨트롤이 TEdit형이고 Edi1이란 이름을 갖고
있다면, TWinControl * 형으로 억세스가 가능한 프로퍼티만 직접 억세스할 수 있습니다.
대표적으로 Name 프로퍼티는 알아낼 수 있으므로, Edit1은 알아낼 수 있죠.

하지만, ActiveControl이 특정 클래스형인지 아닌지는 검사할 수 있습니다.
if(dynamic_cast<TEdit *>(ActiveControl))
   ...
다이내믹 캐스트는, 주어진 포인터가 지정한 형으로 캐스팅이 가능하면 캐스팅된
포인터를 리턴하고, 그렇지 않을 경우 NULL을 리턴하므로, 이 if문은
현재 포커스를 가진 컨트롤이 에디트인지를 검사하는 겁니다.

그럼 참고하시길...

+ -

관련 글 리스트
1887 [질문]현재 어느 컴포넌트에 포커스가 있을까? 최지수 3104 1999/09/01
1889     Re:[질문]현재 어느 컴포넌트에 포커스가 있을까? 박지훈.임프 3234 1999/09/01
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.