Q&A

  • DBGrid에서 CELL의 색깔 변경을 하고싶은데요

학생이름 번호 국어 영어 수학 합계  평균
홍길동   A01    50   80   60  190  63.3
김이박   A02    70   50   90  210  70.0

국어, 영어, 수학 컬럼에 60점 미만인 점수에 색깔을 달리 지정하고 싶은데요
  즉 1) 홍길동 학생의 국어 성적 (50)
     2) 김이박 학생의 영어 성적 (50) CELL에
   빨간색을 을 사용하고 싶은데요.

초보라서 게시판,팁을 보고도 잘 모르겠네요
고수님 조언 부탁드립니다.

2  COMMENTS
  • Profile
    이재식 2002.06.16 11:54
    안녕하세요?

    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var
        ScoreStr : String ;
    begin

        with DBGrid1 do
        begin
            if (DataCol >= 1) and (DataCol <= 3) then
            begin
                ScoreStr := IntToStr(Fields[DataCol].AsInteger) ;

                if (StrToIntDef(ScoreStr, 0) < 60) then
                begin
                    with Canvas do
                    begin
                        Brush.Color := clRed ;
                        TextRect(Rect, Rect.Right-TextWidth(ScoreStr)-3, Rect.top+1, ScoreStr) ;
                    end ;
                end ;
            end ;


        end ;


    end;

    테이블 필드순서가 번호, 국어점수, 영어점수, 수학점수 이렇게
    4개만 있다고 가정합시다.
    그럼 DataCol의 범위는 1(국어점수 칼럼 인덱스) 서부터 3(수학점수 칼럼인덱스) 가 되겠죠.

    그리고나서 각 칼럼의 점수를 받아 60점 미만이면 셀색깔 빨갛게
    바꾸고 글씨도 출력해야 하니까, TextRect를 쓰시면 될것 같네요

  • Profile
    박준열 2002.06.16 21:10
    [감사합니다]
    덕분에 잘 해결되었슴니다.
    2일밤을 삽질하다가 글을 올렸는데,  땡초에게 이렇게 큰 도움을 주셔서 무지 감사합니다.

    [답변]
    **************************************************************
    **************************************************************
    [질문]