|
DrawGrid는 Cells이 없습니다. 그렇기 때문에, 각 셀 영역의 좌표를 구해서 해당 값을 얻어와야 합니다. CellRect 메소드는, 행 열을 기준으로 좌표를 얻어줍니다. 또한, MouseToCell은 그 반대의 기능을 합니다.
그리고, 단순히 그림을 집어넣기 위해서라면, StringGrid도 괜찮습니다. 문제는, StringGrid에서 한 줄이 선택될때 Focus라인 (파란색)이 생기는데, 이미지가 들어가면 잘 어울리지 않는다는 겁니다. 이 문제는 이미지의 크기나 색상을 알맞게 조절해 주시면 될 것 같습니다.
StringGrid에 그림을 그리는 방법은, StringGrid->Canvas 에서 직접 그려 주시면 됩니다. DrawGrid가 가지고 있는 CellRect을 StringGrid도 가지고 있습니다. 예를 들어, 1,1 번째 칸에 아이콘을 집어 넣고 싶으시다면, StringGrid->CellRect(1, 1) 해서 나온 Rect에다가 아이콘을 그려 넣어 주시면 됩니다.
서비 님이 쓰신 글 :
: DrawGrid를 쓰면
: Cells가 안먹히잖아요..
:
: 그럼 내용을 가져올때 어떻게 하죠?
:
: 김백일 님이 쓰신 글 :
: : TDrawGrid는 OnDrawCell 이벤트 핸들러에서
: : 문자열외에 얼마든지 그래픽을 사용하는 코딩을 할 수 있습니다.
: :
: : 다음은 헬프에 있는 예제입니다.
: :
: : // The following code uses the bitmaps in an image list component to draw the contents of
: : // each cell in a draw grid. It draws a focus rectangle around the cell that has focus.
: : void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, long Col, long Row, TRect &Rect, TGridDrawState State)
: :
: : {
: : long index = Row * DrawGrid1->ColCount + Col;
: : DrawGrid1->Canvas->Brush->Color = clBackground;
: : DrawGrid1->Canvas->FillRect(Rect);
: : ImageList1->Draw(DrawGrid1->Canvas,Rect.Left,Rect.Top,index);
: : if (State.Contains(gdFocused))
: : DrawGrid1->Canvas->DrawFocusRect(Rect);
: : }
: :
: : 서비 님이 쓰신 글 :
: : : 현재 DrawCell 이벤트를 이용하여.. 각 셀이나 값에따라서 색을 다르게 표현했습니다.
: : :
: : : 근데 TListView처럼 각 행마다 Icon을 넣을 수 있을까요?
: : :
: : : 검색을 해봤는데 셀병합 Font바꾸기 등 예제밖에없고 이미지를 넣을 수 있는건 없네요..
: : :
: : : 불가능 한가요?
|