Q&A

  • 달력컴포넌트에서 OnChange이벤트핸들러를 어떻게 구현하죠?
안녕하세요.영원한 델초보 어린왕자입니다.



달력컴포넌트의 Select된 날짜가 변경될때 마다 작업을 해야 하는데 어떻하죠?

클릭할때도 변경되지만..

마우스 오른쪽 버튼을 누르면 오늘 날짜로 이동하는 메뉴가 나오는데..

그것을 선택하면 클릭하는 이벤트가 안뜨더라구요..



고로 OnChange이벤트가 있어야 할텐데요...(__);

1  COMMENTS
  • Profile
    김일영 2001.10.27 13:58
    안녕하세요.



    언제나 분류를 기다립니다. ^^;



    그리고 달력컴포넌트라고 하신게 TMonthCalendar 컴포넌트 맞으시죠?



    제가 답변을 별로 해 드리지는 못하는 편이지만

    관심을 가진 것은 열심히 찾아봅니다.



    이 문제에 관심이 생겨서 열심히 찾아봤습니다!

    헌데 해결책을 찾기란 어려울듯...



    우측 버튼을 눌렀을때 나오는 그 창은

    VCL 코드 차원에서 만드는 창도 아니고

    MonthCalendar가 wrapping하고 있는 Common Control도 아닌,

    그 Common Control이 자체적으로 우측 버튼을 눌렀을때 보여주는 창이더군요...



    그래서 그건 어려울 것 같고요...(불가능한지는 모르겠지만 쉽진 않겠습니다.)

    차라리 TMonthCalendar의 소스를 고쳐가지고

    TMonthCalendar.MsgSetDateTime가 호출될 때 (protected procedure입니다.)

    이벤트를 호출하도록 컴포넌트 코드를 바꿔서 새로 만드시는게 나을듯 합니다.

    혹은 TMonthCalendar를 고친 것에 해당하는 새로운 클래스를 만드시던가요.



    주의:)

    MsgSetDateTime에서는 TDateTime형의 값이 전달되는게 아니라

    TSystemTime형의 값이 전달됩니다. 이 값을 다시 변환하시는게 싫으시면

    TMonthCalendar의 Parent Class인 TCommonCalendar의 SetDateTime 프로시저

    (private procedure입니다.)까지 거슬러 올라가서 고치셔야 합니다.



    TSystemTime과 TDateTime간의 변환이 어렵진 않습니다.

    SysUtils 유닛의 SystemTimeToDateTime를 이용하시면 됩니다.

    반대는 DateTimeToSystemTime입니다.



    만약에 Common Control 내부에서의 메시지 같은 것을 가로챌 수 있다고 하더라도

    TMonthCalendar 내지는 그 Parent Class인 TCommonCalendar의 소스를 고치던가

    새 클래스를 만들어야 하는 것은 마찬가지입니다.



    별로 신통하진 않지만...

    참고가 되시길 바랍니다. (결과 알려주시면 더욱 감사)









    어린왕자A wrote:

    > 안녕하세요.영원한 델초보 어린왕자입니다.

    >

    > 달력컴포넌트의 Select된 날짜가 변경될때 마다 작업을 해야 하는데 어떻하죠?

    > 클릭할때도 변경되지만..

    > 마우스 오른쪽 버튼을 누르면 오늘 날짜로 이동하는 메뉴가 나오는데..

    > 그것을 선택하면 클릭하는 이벤트가 안뜨더라구요..

    >

    > 고로 OnChange이벤트가 있어야 할텐데요...(__);