궁금이 님이 쓰신 글 :
: Cell 의 색을 변경하는게 아니라
: line 의 색을 어떤라인은 투명으로 어떤 라인은 까만색으로 지정할수있나요?
스트링그리드 속성은 기본 속성 그대로 두고 DrawCell 이벤트 함수만 구현했습니다.
투명한 라인을 그리시려면 DefaultDrawing 속성을 False로 하시고 라인을 그리지 않던지
아니면 DefaultDrawing 속성이 True인 상태에서 스트링그리드의 Color와 같은 색으로 라인을 그리시면 될 것 같습니다.
그리고 Cell의 상태에 따라 각각 다른 라인을 그리시려면... 각 상황에 따라.. Rectangle이 아닌 LineTo를 사용해서 일일이 그려주셔야 할 것 같습니다. :->
void __fastcall TForm1::StringGrid2DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
TCanvas* Canvas = ((TStringGrid*)Sender)->Canvas;
if(State.Contains(gdFixed)) {
/* Fixed Row 또는 Fixed Column 일 경우에는 그리지 않는다. */
} else {
Canvas->Pen->Color = clBlue;
/* Fixed Row 또는 Fixed Column에 접한 라인은 그리지 않는다. */
if(ARow == ((TStringGrid*)Sender)->FixedRows) {
if(ACol == ((TStringGrid*)Sender)->FixedCols) {
Canvas->MoveTo(Rect.Left, Rect.Bottom);
} else {
Canvas->MoveTo(Rect.Left-1, Rect.Top);
Canvas->LineTo(Rect.Left-1, Rect.Bottom);
}
Canvas->LineTo(Rect.Right, Rect.Bottom);
Canvas->LineTo(Rect.Right, Rect.Top-1);
} else if(ACol == ((TStringGrid*)Sender)->FixedCols) {
Canvas->MoveTo(Rect.Left, Rect.Top-1);
Canvas->LineTo(Rect.Right, Rect.Top-1);
Canvas->LineTo(Rect.Right, Rect.Bottom);
Canvas->LineTo(Rect.Left-1, Rect.Bottom);
} else {
Canvas->Rectangle(Rect.Left-1, Rect.Top-1, Rect.Right+1, Rect.Bottom+1);
}
}
}
//---------------------------------------------------------------------------
|