Q&A

  • stringGrid1.canvas.TextRect를 자세하게
저는 델파이로 개발하는 회사에 막 입사한 사람입니다.( 꾸벅 )부탁드립니다

stringGrid1.canvas.TextRect

(Rect, Rect.Left + 3, Rect.Top + 3, StringGrid1.cells[Acol, Arow]);

를 자세하게 알고 싶어요,,,(예 Rect.Left + 3 에서 Rect.Left 의 의미와 3의의미)등

TextRect에대해 가르쳐주시면 감사하게 유용하게 써겠습니다.. 고수님들의 가르침 부탁드립니다..아님 관련된자료의 사이트나 첨부파일이라도...

1  COMMENTS
  • Profile
    Alex 2001.04.22 04:18
    윤종진 wrote:

    > 저는 델파이로 개발하는 회사에 막 입사한 사람입니다.( 꾸벅 )부탁드립니다

    > stringGrid1.canvas.TextRect

    > (Rect, Rect.Left + 3, Rect.Top + 3, StringGrid1.cells[Acol, Arow]);

    > 를 자세하게 알고 싶어요,,,(예 Rect.Left + 3 에서 Rect.Left 의 의미와 3의의미)등

    > TextRect에대해 가르쳐주시면 감사하게 유용하게 써겠습니다.. 고수님들의 가르침 부탁드립니다..아님 관련된자료의 사이트나 첨부파일이라도...



    윤종진님께서 고민하는 사항은 StringGrid의 OnDrawCell Event Handler를 구성할 때

    생긴것 같은데 먼저 핸들러에서 주어지는 파라미터부터 살펴보도록 하죠.



    procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;

    Rect: TRect; State: TGridDrawState);



    - Sender는 StringGrid자체가 넘어올 것이구요.

    - ACol, ARow는 현재 Drawing하고자 하는 셀의 행과 열을 나타냅니다.

    - Rect는 현재 그리고자 하는 셀의 영역을 나타냅니다.

    참고로 TRect다음과 같이 직사각형영역의 좌우상하,좌상/우하로 나타낼 수 있는

    형태로 선언되어 있습니다.

    TRect = record

    case Integer of

    0: (Left, Top, Right, Bottom: Integer);

    1: (TopLeft, BottomRight: TPoint);

    end;

    - 마지막으로 State는 셀이 선택영역안에 있는지, 현재 focus를 가지고 있는지 fixed Col

    혹은 fixed Row인지를 나타내며 포멧은

    TGridDrawState = set of (gdSelected, gdFocused, gdFixed); 의 형태로 되어있습니다.





    따라서 님께서 코딩하신 내용은 셀의 해당영역에 문자열을 출력하는 것입니다.

    그리고 Rect.Left+3, Rect.Top+3과 같이 3을 더하는 것은 셀의 좌측, 혹은 위에 문자열이

    붙어서 나타나 StringGrid의 GridLine과 겹치지 않고 약간의 공간을 두고

    출력이 되도록 하고자 함입니다.



    참고로 디자인 시 StringGrid를 상기와 같이 OnDrawCell Event Handler를 구성하지 않는

    경우 +2로 화면상에 출력됩니다.



    도움이 되었는지 모르겠네요



    즐코하세요.