procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
VAR
M_COLOR:TCOLOR;
M_CHANGEKIND:INTEGER;
M_CHANGENAME:string;
begin
with wagedata.SQLLABORAGE_CHANGE_LOG do
begin
M_CHANGEKIND:= FieldByName('SEX').asINTEGER;
case m_changeKind of
1:
begin
M_COLOR:=CLBLUE;
M_CHANGENAME := '男' ;
END;
2:
begin
M_COLOR:=CLRED;
M_CHANGENAME := '女' ;
end;
else
begin
M_COLOR:=CLBLACK;
M_CHANGENAME := '不男不女' ;
end;
end;
(SENDER AS TDBGRIDEH).Canvas.Font.Color := M_COLOR;
end;
(SENDER AS TDBGRIDEH).DefaultDrawColumnCell(Rect, DataCol, Column,State);
if ansicomparetext(Column.FieldName,'SEX')=0 then
column.Grid.Canvas.TextRect(rect,rect.left,rect.Top,M_CHANGENAME);
呵呵,几位方法可行性不说了,不过用不了这么麻烦!!
procedure TForm1.GetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
if Sender.AsString='1' then
Text:='男'
else
Text:='女';
end;
procedure TForm1.ADOTable1AfterOpen(DataSet: TDataSet);
begin
DataSet.FieldByName('SEX').OnGetText:=GetText;
end;
写字段的OnGetText写事件就可以了。