님 답변 감사합니다
skjoon 님이 쓰신 글 :
: 궁금이 님이 쓰신 글 :
: : 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);
: }
: }
: }
: //---------------------------------------------------------------------------
: |