// 안녕하세요 김영대(http://www.howto.pe.kr) 입니다
// 전에 팁으로 올렸던 건데 소스를 조금 수정하여 사용하시면 될것 같습니다
Tdbgrid의 OnDrawColumnCell을 이용하면 편리합니다.
몇가지만 응용하면 지정한 셀에 이미지를 그려 체크표시등도
가능합니다.
아래의 예제는 특정셀을 노란색바탕에 검은 글씨로 만듭니다.
State를 검사하는 이유는 현재 선택된 셀은 그려선 안되기
때문이지요.. 또한 Boolean값으로 저장되어 있는 컬럼들,
예를 들자면 성별같은 것들을 '남','여'로 표시할때도
이 Event를 사용하지요.
procedure TForm1.dbgrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
with Tdbgrid(Sender).Canvas do begin
if (Column.FieldName = 'FILEDNAME') and (State = []) then begin
Brush.Color := clYellow;
Font.Color := clBlack;
end
else begin
Brush.Color := clWindow;
Font.Color := clWindowText;
end;
if (gdFocused in State) or (gdSelected in State) then begin
Brush.Color := clHighlight;
Font.Color := clHighlightText;
end;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2,Column.Field.AsString);
Brush.Style := bsSolid;
Brush.Color := clWindow;
end;
end;
Canvas.Font.Color만 하시면됩니다
AsInteger대신 다른걸로하셔도됩니다
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
with TDBGrid(Sender) do begin
if (DataCol = 0)and(Column.Field.AsInteger < 0) then begin
Canvas.Font.Color :=clRed;
DefaultDrawColumnCell(Rect, DataCol, Column,[]);
end;
end;