DBgrid 重绘以后的问题(25分)

  • 主题发起人 主题发起人 烂泥
  • 开始时间 开始时间

烂泥

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TFrm_cl.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
dbgrid1.Canvas .FillRect (rect);
if (column.Field =query1jc) and (query1jc.Asinteger<0) then
dbgrid1.Canvas .font.color:=CLred;
if (column.Field =query1jc) and (query1jc.Asinteger>0)then
dbgrid1.Canvas .font.color:=CLBlue;
if (column.Field =query1jc) and (query1jc.Asinteger=0) then
dbgrid1.Canvas .font.color:=Clgreen;

dbgrid1.Canvas .textrect(Rect,REct.left,Rect.Top,column.Field .displaytext);
end;

如上代码以后,Dngrid中所有的字段都开始左对齐,太难看。
有办法解决麽?
 
问题在REct.left上面。
关注
 
解决办法:
1、在CELL中的CANVAS中得到文字的宽度,用TEXTWIDTH可以得到。
2、自己决定要右对齐还是居中,再求CELL的宽,如果CELL的宽比文字长,那么就可以居中或右对齐,也就是改变TEXTOUT中的文字写出起始点的参数
3、问题解决。发分吧,
我自己编过一个软件,去年的事,解决了,详细的可以发信过来:
mail to :loopy@netease.com
 
将 dbgrid1.Canvas .textrect(Rect,REct.left,Rect.Top,column.Field .displaytext);
换成
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
试试
 
多人接受答案了。
 
后退
顶部