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를 쓰시면 될것 같네요
학생이름 번호 국어 영어 수학 합계 평균 홍길동 A01 50 80 60 190 63.3 김이박 A02 70 50 90 210 70.0 국어, 영어, 수학 컬럼에 60점 미만인 점수에 색깔을 달리 지정하고 싶은데요 즉 1) 홍길동 학생의 국어 성적 (50) 2) 김이박 학생의...
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를 쓰시면 될것 같네요