Q&A

  • stringgrid에 삽입한 그림을 변경하려는데 안됩니다.
스트링그리드에 BrushCopy 를 이용해서 bitmap 그림을 하나 삽입

했습니다.



근데, 어떤 조건에 따라 다른 그림으로 변경했다가, 다시 원래그림으로

돌아오게 구현하려고 합니다.



근데, 다시한번 BrushCopy를 쓰면, 변화가보이질 않습니다. 마우스로

그 셀을 클릭해야 변화를 볼수 있습니다.



어떻게 해야 화면으로, 마우스를 클릭않해도 변화를 볼 수 있을까요.



가능성 있는 답변이라도 꼭 부탁드리겠습니다.



1  COMMENTS
  • Profile
    김영석 2000.12.19 22:55
    BrushCopy 로 할때에 어느 이벤트에서 그렸는지 모르겠습니다.

    그림이 변경될때 그 그림이 들어갈 스트링그리드에서의 Cell 의 Rect 를 구한후에

    그곳에 그려주면 됩니다. 마우스로 클릭하면 그 셀을 다시 그리게 되는데

    그 셀을 다시 그리지 않아서 그런거 같네요.

    그림이 변경될때 그 셀의 Rect 를 구하는 함수가..

    CellRect 라는 함수가 있습니다.

    거기에서 원하는 셀의 Rect 를 구하고 그 영역에 뿌려주면 될거같은데..

    BitBlt 함수도 좋고..



    그러니까 마우스로 클릭한다는 의미는 그 셀이 선택이 되니까 내부적으로

    그 셀을 다시 그려주도록 명령하고 StringGrid 의 OnDrawCell 에서 그림을

    그려주도록 되어있다면 그림만 바꿔준다고 해서 스트링그리드 상에서

    그림이 변경되지 않습니다. 직접 그림이 변경되는 순간에 StringGrid.CellRect(ACol, ARow) 로 그 셀의 영역을 구한후에 그 영역에 BrushCopy 를 해주면 됩니다.



    진현주 wrote:

    > 스트링그리드에 BrushCopy 를 이용해서 bitmap 그림을 하나 삽입

    > 했습니다.

    >

    > 근데, 어떤 조건에 따라 다른 그림으로 변경했다가, 다시 원래그림으로

    > 돌아오게 구현하려고 합니다.

    >

    > 근데, 다시한번 BrushCopy를 쓰면, 변화가보이질 않습니다. 마우스로

    > 그 셀을 클릭해야 변화를 볼수 있습니다.

    >

    > 어떻게 해야 화면으로, 마우스를 클릭않해도 변화를 볼 수 있을까요.

    >

    > 가능성 있는 답변이라도 꼭 부탁드리겠습니다.

    >