C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3367] Re:DBGrid에서 원하는 컬럼만 색깔을 변경하는 방법을 아시는 분?
정진후 [] 5321 읽음    2000-04-20 00:00
송영규 님이 쓰신 글 :
: DBGrid에서 컬럼전체 혹은 행 전체의 색깔을 바꾸는 것은 그리 어려운 일은 아닙니다.
: 그런데 원하는 행에서 특정 열의 색깔을 바꾸고 싶은데 어떻게 해야 합니까!!
: 아시는분 해법을 좀 올려주세요

안녕하세요 정진후라고 합니다.
간단한 방법은 디비그리드의 DrawColumnCell이벤트 핸들러를 기술하면 됩니다.
주의 하실 점으로는 TQuery나 TTable에 의해 셀렉된 레코드를 디비그리드에 하나
하나 다시 "수동"으로 그려 주시는 만큼 다양한 경우(해당 셀이 선택되어 있을
경우는 색을 어떻게 해야 할지, 폰트의 색은 어떻게 할지)를 "직접"
코딩해 주셔야 합니다. 그리고 셀렉된 모든 필드를 디비그리드 상에 표시할 때마다
발생하는 이벤트이므로 원하시는 컬럼 이외의 필드들은 처리하지 않으셔야 합니다.
즉, 원하시는 컬럼은 DrawColumnCell을 이용해서 직접 그리시고,
나머지 컬럼들은 디비그리드가 디폴트로 그리는 대로 놔둔다고 생각하시면
되겠습니다.


void __fastcall TForm1::DBGrid1DrawColumnCell(TObject *Sender,
      const TRect &Rect, int DataCol, TColumn *Column,//이 인자로 해당 컬럼을 판별합니다.
      TGridDrawState State)                           //TColumn의 헬프를 보시면 유용한 정보가
{
    try {
        if(Column->FieldName != "EMP_NAME")//"EMP_NAME"이외의 컬럼은 디폴트로 그리라는 의미.
            return;                        //원하시는 컬럼의 이름을 기술하시면 됩니다.
        Variant vFieldVal = Column->Field->Value;

        if (State.Contains(Grids::gdSelected)) {//선택된 행
            DBGrid1->Canvas->Brush->Color = clNavy;
            DBGrid1->Canvas->FillRect(Rect);
            DBGrid1->Canvas->Font->Color = clWhite;
        }
        else {                                  //선택되지 않은 행
            DBGrid1->Canvas->Brush->Color = 원하는 컬러;
            DBGrid1->Canvas->FillRect(Rect);
            DBGrid1->Canvas->Font->Color = clBlack;
        }
        DBGrid1->Canvas->TextOut(Rect.Left + 2, Rect.Top + 2, vFieldVal);
    }
    catch (...) {
        return;
    }
}
//---------------------------------------------------------------------------


정도로 하시면 원하시는 바를 얻을 수 있으실 것 같은데...
디버깅을 한 것은 아니어서 버그가 있을 수도 있고요. 만일 그렇다면
다시 글을 올려주시던가 메일 보내 주세요.
그럼 이만.

+ -

관련 글 리스트
3340 DBGrid에서 원하는 컬럼만 색깔을 변경하는 방법을 아시는 분? 송영규 3442 2000/04/17
3367     Re:DBGrid에서 원하는 컬럼만 색깔을 변경하는 방법을 아시는 분? 정진후 5321 2000/04/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.