PRocedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var s:String; begin TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State); s:=Column.Field.DisplayText; if (Column.FieldName='FAX') and (Length(s)<10) then begin with TDBGrid(Sender).Canvas do begin Pen.Color :=clRed; Arc(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom,Rect.Left,Rect.Top,Rect.Left,Rect.Top); end; end; end; 直接画圆弧就可以了,后面的这种方法只是提供一种参考: procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); const Flags:array [TAlignment] of DWord=(DT_LEFT,DT_RIGHT,DT_CENTER); var s:String; R:TRect; begin TDBGrid(Sender).DefaultDrawColumnCell(Rect,DataCol,Column,State); s:=Column.Field.DisplayText; r:=Rect; if (Column.FieldName='FAX') and (Length(s)<10) then begin with TDBGrid(Sender).Canvas do begin Pen.Color :=clRed; RoundRect(Rect.Left,Rect.Top,Rect.Right,Rect.Bottom,Rect.Left,Rect.Top); DrawText(Handle,pchar(s),length(s),R,Flags[Column.Alignment] or DT_VCENTER); end; end; end;