델파이

TDateTimePicker 의 이벤트 사용

미스터몽키 2014. 8. 14. 18:07

 

TDatetimePicker 에서 날짜 선택시 어떤 처리를 할때 다음과 같은 문제점이 있다.

 

TDatetimePicker 의 onChange 이벤트는

1. 기본적으로 두번 발생한다. 또한 중간에 월 을 이동하면 계속 onChange가 발생한다.

2. 직접 타이핑시에는 바뀔때 마다 발생한다.

3. 코드상에서 날짜를 할당해서는 발생하지 않는다. 그나마 다행이다. 초기값 등을 할당할 때 발생하지 않는다는 뜻.

4. onCloseup 이벤트는 한번만 발생한다. 하지만 타이핑에 의한 것은 onCloseup에서 발생하지 않는다.

 

따라서 TDatetimePicker에서 이벤트는 사용하지 않고 별도의 검색 버튼을 누를 때 날짜 조건을 사용하는 것도 방법이지만

 

검색 버튼 을 만들지 않고 심플하게 날짜 선택시 바로 검색되길 원한다면..

 

해결방법으로

1. onKeyPress에서 모든 값을 무시하게 Key := #0 그리고 방향키도 무시하려면 onKeyDown에서 Key := 0  으로 하고 

  ( ReadOnly 속성이 없어서)
   onCloseup 이벤트에서 처리하여 꼭 달력에서 날짜를 선택하게한다.


  (참고) onKeyPress에서는 변수 Key가 Char형이라 방향키 등을 인식 못한다.