|
DBGrid를 상속받아서 새로운 컴포넌트를 만드셔야 할 거 같구요.
상속받은 새로운 DBGrid 컴포넌트 내부에 타이머를 가지고 있으면서, 타이머 이벤트가 발생할 때마다 해당 셀만
InvalidateCell()인가 함수를 호출해주어야 하고요. 물론 당연히 셀이 드로우될 때 해당 셀인지 확인해서
색깔을 바꾸어 그려주어야 하겠지요.
만약 새로운 컴포넌트를 만들지 않고 해결하려면 protected 멤버인 InvalidateCell()을 호출할 방법이 없어서
해당 셀만 다시 그릴 방법이 없습니다. 강제로 전체 그리드를 다시 그리게 하는 방법밖에 없지요.
이것은 스트링그리드를 써도 마찬가지입니다.
그럼...
땅주인 님이 쓰신 글 :
: 클라이언트가 이 기능을 꼭 요구하네요..
:
: DBGrid에 데이터를 조회하는데..
: 신규로 발생한 데이터이면 특정 셀(ACK처리셀)을 특정 색깔로 칠해서
: 깜빡거리게 해달라고 합니다. 그리고, ACK 처리하면 본래의 하얀색으로
: 돌아가게끔 요구합니다.
:
: DBGrid의 OnDrawCell() 이벤트에 특정 셀에 색상을 칠하게 하는 것은
: 알고 있는데.. 이 이벤트가 셀에 데이터를 써야지만 동작하는 것으로
: 알고 있습니다.
:
: 실제 디버거로 쫓아가봐도 그렇게 동작하구요..
:
: 1초 단위로 셀에 색상을 칠했다가, 하얀색으로 만들었다가 하면서 Blink 기능을
: 구현하려고 하는데...이렇게 할 경우
:
: DBGrid에서 해당 셀의 데이터를 읽어서 다시 동일한 데이터를 써야 하는 문제가
: 생기는데요.. 이 문제 외에도 첫번째 레코드에서부터 루프를 돌면서 셀의 테이터를
: 읽어서 처리하면 화면의 Selected bar(선택바)가 같이 움직이는 현상이 발생하는데
: 이렇게 되면 안될 것 같아서요..
:
: 좋은 방향이 있으면 알려 주시면 감사하겠습니다.
:
: 그냥 StringGrid를 쓰면 어떻까 생각중인데.. 좋은 방법을 알려주시길.....
:
:
: 감사합니다.
:
:
|