본문 바로가기

Dev::DotNet/WinForm

Spread 의 AllowCellOverflow 에 대해서....

Farpoint Spread 에 보면 AllowCellOverflow 라는 속성이 있다.


AllowCellOverflow  는 셀의 내용이 길때 뒤쪽 셀의 내용이 없으면 뒤쪽까지 보여주는 아주 좋은 기능이다.


▶ fpSpread1.AllowCellOverflow = false; (기본)

   


▶ fpSpread1.AllowCellOverflow = true;

  



해당 기능은 Spread ActiveX Component 에서도 있는 기능이고 

닷넷 윈폼 버전인 GrapeCity Spread for Windows Forms 에서도 당연히 동일하게 존재한다.



보통 AllowCellOverflow 속성을 디자이너에서 변경하고 작업하는 경우가 있다.


닷넷용 Spread 에서는 

아실 분은 아시겠지만 화면에 Draw 하는 것이 굉장히 극악의 포퍼먼스를 자랑한다.

(Merge 된 셀이라던가 리치텍스트박스 속성의 셀이라던가......)


AllowCellOverflow 도 Draw 포퍼먼스를 떨어뜨리는 것 중 하나이다.


간단한 테스트를 해보았다.



"Line Add" 버튼을 누르면 20줄씩 새로운 Row을 추가하면서 이전 Row를 추가할 때 걸린 Tick 을 보여준다.


1 > 


첫번째는 Row을 추가하기 전에 AllowCellOverflow 을 false 로 변경했다가 

모든 작업을 완료후 다시 true 로 변경해주었다.



한 Row을 출력하는데 거의 시간이 소모되지 않는다는 것을 알 수 있다.


2> 


두번째는 Row 추가 전에 AllowCellOverflow 의 속성을 단지 true 로 시작하였다.

(디자이너에서 속성을 변경하거나 초기화시 변경한 거와 비슷한 상황이다.)



단지 AllowCellOverflow 속성이 true 로 놓고 시작한 것이지만

Row 를 추가하는데 걸리는 시간이 몇배이상 늘어난 것을 볼 수 있다.



Row 에 ForeColor 나 BackColor 를 추가하면 Draw 시 걸리는 시간은 더 늘어난다.

 > fpSpread1.AllowCellOverflow = false;                         > fpSpread1.AllowCellOverflow = true;



추가하는 Row 의 수가 100줄만 넘어가도 체감할 수 있는 시간 차이가 난다.

아무리 로직을 잘 만들어도 저거 하나에 모든 것을 뒤집을 수 있는 시간차가 발생하는 것이다.



Spread 의 AllowCellOverflow 속성을 사용할 때는


작업전에는 false 로 작업후에 true 로 바꿔주는 것이 사용시 많은 성능의 향상을 가져올 수 있다.