Q&A

  • [질문]Listview 의 change 나 changing 이 왜 여러번 이벤트 발생하나요 ?
listview 의 change 나 changing 을 사용하면서 문득,
왜 이벤트가 3 번씩 발생하는지 궁금해 졌습니다.

이벤트에 따라서 발생이 끝난 다음것과
발생 도중의 것을 구분해서 만들어 두었을 텐데
왜 이벤트는 3 번이 발생하는지요 ?
실제 변경된 것만 처리하려고 하니 방법이 없군요.

질문이 있었을 수도 있을 거라고 생각했는데 이에 대한 질문도 없어서 좀 의외 이군요.
다른 분들은 키보드 등으로 위치 이동되는 경우 ListView 의 항목에 대해 변경 선택된 것을 처리하는 경우
어떻게 하시는지요 ?

3  COMMENTS
  • Profile
    엄마미안 2009.11.23 04:46
    ListView OnChange, OnChanging 이벤트에서 넘겨주는 파라메터를 확인해보시죠.
    Sender와 함께 OnChange에서는 Item: TListItem, Change: TItemChange가 넘어오고 OnChanging에서는 Item:TListItem, Change:TItemChange, AllowChange:Boolean이 넘어오네요.

    저 파라메터를 잘 살펴보심이...
  • Profile
    장성호 2009.11.23 21:04
    어렵네요...

    저도 왜 정확히 3번씩 발생하는지 잘 이해가 안오네요
    Windows에서 그렇게 메세지를 보내는것 같기두 하구...


    여튼 OnChange , OnChanging이벤트에서 바뀌기전 item과 바뀐후(즉 새로 선택하는 item)을 찾고자 한다면

    OnChnage이벤트에서
    if item <> listveiw.selected then 이때 item은 이전에 선택되어있던 item이구요


    onChanging이벤트에서
    if item <> listveiw.selected then 이때 item은 새로 선택한 item이 됩니다.



    그럼..

  • Profile
    이은주 2009.11.25 20:42
    도움말씀 감사드립니다.

    장성호님말씀처럼 처리해도 제대로 안되는 것 같아서
    컴포넌트를 새로 만들어서 이벤트를 구분해서 마지막 선택된 것을 구분하도록 저장해서 비교하는 방법으로 문제를 해결했습니다.