저는 델파이로 개발하는 회사에 막 입사한 사람입니다.( 꾸벅 )부탁드립니다
stringGrid1.canvas.TextRect
(Rect, Rect.Left + 3, Rect.Top + 3, StringGrid1.cells[Acol, Arow]);
를 자세하게 알고 싶어요,,,(예 Rect.Left + 3 에서 Rect.Left 의 의미와 3의의미)등
TextRect에대해 가르쳐주시면 감사하게 유용하게 써겠습니다.. 고수님들의 가르침 부탁드립니다..아님 관련된자료의 사이트나 첨부파일이라도...
> 저는 델파이로 개발하는 회사에 막 입사한 사람입니다.( 꾸벅 )부탁드립니다
> 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로 화면상에 출력됩니다.
도움이 되었는지 모르겠네요
즐코하세요.