제 어플리케이션에서 쓸 DBGrid 를 구현해 보려고 합니다.
그런데,
TStringGrid 를 쓰니까,
큰 용량의 DBF 를 로드 할 경우 성능이 아주 많이 떨어집니다.
아마도 TStringGrid 는 데이터를 갖고 있어서 그런 것이라 판단을 하고
TDrawGrid 에 직접 데이터를 읽어서 뿌려주기로 마음을 먹었습니다.
그래서 TDrawGrid 의 DrawCell 이벤트에 TTable 의 커서를 옮기고
데이터를 읽어서 뿌리는 부분을 구현하고,
다른 부분에서 데이터 갱신될 경우에 DrawGrid->Invalidate(); 해주었더니,
Cell 의 내용이 바뀌는 속도가 눈에 보일정도로 느립니다.
TDBGrid 처럼 가볍고 빠르게 동작하기 위해선 이런 방법이 아닌 다른 방법을 써야하는건가요 ?
DrawCell 이벤트에 현재 화면에 포함되는 Cell 인지 아닌지도 파악을 해서 return 시켜줘야 하는건가요 ?
고수분들의 조속한 답변 부탁 드립니다.
|