DBGrid单元格画圆圈

王朝delphi·作者佚名  2006-01-09
宽屏版  字体: |||超大  

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;

bytetype,用于判断某个 Char 是单个字母,还是双字节的前一位或后一位。

mbSingleByte 单字母

mbLeadByte 双字节第一位

mbTrailByte 双字节第二位

ExtractStrings,分割字符串

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有