스트링그리드 속성중에
DefaultDrawing이 있습니다.
기본이 DefaultDrawing = true인데
true일 경우,
그리드가 자동으로 그려집니다.
false로 하면
그리드를 원하는 대로 그릴수 있습니다.
DefaultDrawing 를 false로 하고
OnDrawCell 이벤트에서 직접 그려주면 원하는 것을 할 수 있습니다.
예)
1. 스트링그리스 속성에서
DefaultDrawing 를 false로 하거나
폼 생성자에 아래 코드를 추가합니다.
StringGrid1->DefaultDrawing = false;
2. 스트링 그리드의 OnDrawCell 이벤트를 아래와 같이 작성합니다.
void __fastcall TForm2::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
// 셀 그리기
// 고정 셀은 버튼 모양으로
if(State.Contains(gdFixed)) {
StringGrid1->Canvas->Brush->Color = clBtnFace;
StringGrid1->Canvas->Font->Color = clWindowText;
StringGrid1->Canvas->FillRect(Rect);
Frame3D(StringGrid1->Canvas, Rect, clBtnHighlight, clBtnShadow, 1);
}
// 선택된 셀은 하이라이트 색
else if (State.Contains(gdSelected))
{
StringGrid1->Canvas->Brush->Color = clHighlight;
StringGrid1->Canvas->Font->Color = clHighlightText;
StringGrid1->Canvas->FillRect(Rect);
}
// 나머지 셀은 기본 색으로
else
{
StringGrid1->Canvas->Brush->Color = StringGrid1->Color;
StringGrid1->Canvas->Font->Color = StringGrid1->Font->Color;
StringGrid1->Canvas->FillRect(Rect);
}
// 셀 내용(텍스트) 출력
StringGrid1->Canvas->TextRect(Rect, Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
}
테두리 님이 쓰신 글 :
: 제목 그대로의 내용입니다.
:
: 셀 선택시 점선으로 포커스 된 부분에 사각형이 그려지는데, 이게 안그려지게 하고 싶어요 ㅠㅠㅠ 이것때문에 자꾸 심적으로 앓고 있다가 결국 못찾아서 올립니다. 도와주세요 !!
|