본문 바로가기
프로그래밍/delphi

tms grid 범위선택 과 동시에 Cell 내용 수정하기 delphi

by 메르세데쓰 2015. 9. 11.
반응형



안녕하세요 메르세데스입니다. 이번시간에 알아볼 것은 델파이의 tms-grid 범위선택과 선택한 Cell의 내용 수정하는 방법입니다.


뭐.. 내용은 정말 별 것 아닙니다. TMS그리드를 기본설정으로 사용 하였을 때 발생하는 기초적인 문제입니다.


범위선택옵션과 선택한 셀의 수정이 동시에 작동하지 않는다는 것 입니다.       


다시 이야기하면.. 글편집이 가능한 상태에서는 그리드의 영역선택이 안되고..   반대로 선택이 가능한 상태에서는 셀의 글쓰기가 안된다는 것이죠..


정말 별것 아닌 것 같지만 이거 진짜 불편합니다. 이런 문제가 해결되지 않은 상태에서 프로그램이 배포된다면  그리고 사람들이 사용한다면.. 어떻게 될까요..


사람들은 엑셀과 같은 Grid를 원하잖아요.. 당장 제가 봐도 이렇게 불편한데 말이죠!



일단 Option->goRangeSelect-> True 로 설정해 주셔야 영역선택이 기능이 작동합니다. 이렇게 변경해주세요..


TMS-goRangeSelect



그 다음이 문제인데요..


혹시 코딩으로 이런 문제를 해결 할 수 있지 않을까 해서 아래처럼 작성해 봤습니다.  


MouseMove event


MouseMove 이벤트에  위 처럼 꼼수로 처음 선택한 셀과 위치 정보를 저장해뒀다가 비교해 가면서 편집이 되고 안되고.. 이렇게요.


작동은 하지만 또 다른 문제가 발생합니다.  꼭 마우스가 편집하려는 Cell 내에 있어야만 글 입력이 됩니다.


하지만 저 이벤트를 사용하지 않는다면, 좌표의 위치를 실시간으로 받아오는게 쉽지 않습니다. 


키 입력쪽에 처리를 잘 해 놓아도..또한 마우스가 살짝만 움직여도 편집이 안되고요..


역시..반쪽자리 해결책이었습니다.


그래서.. 프로퍼티의 옵션들을 쭉 훑어보았습니다.  혹시 유용한 기능이 있지 않을까 하고요..    


MouseActions -> RangeSelectAndEdit  라는 녀석이 보입니다.    범위선택과 동시에 Edit가 가능하다는 옵션입니다. 제가 찾고자 하는 기능이 맞을 것 같습니다. 비슷한 고민을 하고 컴포넌트를 만들어 놓은게 아닐까 생각합니다.



MouseActions Properties


Grid의 Option중 goEditing 의 값을 true로 설정하지 않아도 적용됩니다. 확인해보니 제가 원하는 의도로 잘 작동합니다. 


글편집과 범위선택이 동시에가능


매우 유용한 기능입니다.  코딩으로 어떻게 해보려고..시간을 좀 허비하긴 했지만..어찌되었든 원하는 결과를 얻어서 다행입니다. 


우리나라에 델파이 유저가 많은 편은 아니지만.. 혹시 찾으시는 분이 있으시다면 도움이 될 것 같아 정리 해봤습니다. 감사합니다.




반응형

댓글