: 음...
:
: 포커스를 받을 당시에는 OnEnter이벤트를 이용하면 되는걸루 알고 있는데....
:
: 폼위의 많은 컴포넌트들 중에서 어느컴포넌트에 포커스(캐럿)가 있는가를 알고 싶은데...
:
: 어떤 함수를 이용하면 될까요?
:
: 그럼 미리 감사드립니다~~~
:
: 꾸벅~
임펠리테리입니다.
TForm의 ActiveControl 프로퍼티를 사용하면 됩니다. ActiveControl 프로퍼티는
현재 포커스를 갖고 있는 컨트롤의 포인터를 갖고 있습니다. 하지만, 이 프로퍼티는
TWinControl * 형이므로 포커스를 가진 컨트롤이 실제로 어떤 컨트롤인지를 직접
알아낼 수는 없습니다.
다시 말해서, 만약 포커스를 가진 컨트롤이 TEdit형이고 Edi1이란 이름을 갖고
있다면, TWinControl * 형으로 억세스가 가능한 프로퍼티만 직접 억세스할 수 있습니다.
대표적으로 Name 프로퍼티는 알아낼 수 있으므로, Edit1은 알아낼 수 있죠.
하지만, ActiveControl이 특정 클래스형인지 아닌지는 검사할 수 있습니다.
if(dynamic_cast<TEdit *>(ActiveControl))
...
다이내믹 캐스트는, 주어진 포인터가 지정한 형으로 캐스팅이 가능하면 캐스팅된
포인터를 리턴하고, 그렇지 않을 경우 NULL을 리턴하므로, 이 if문은
현재 포커스를 가진 컨트롤이 에디트인지를 검사하는 겁니다.
그럼 참고하시길...
|