如何在DBGrid中显示我指定的字符或数字?(60分)

  • 主题发起人 主题发起人 舒克
  • 开始时间 开始时间

舒克

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在DBGrid中显示我指定的字符或数字?
数据库表中有一个字段为Boolen型,根据该字段的值,指定DBGrid中某一字段显示0或者是
原来该显示的字符,仅仅是在表格中显示,而不会修改到数据库表中的记录。不能到计算字
段或者是LookUp字段,因为我还在在Grid中输入数据。
望高手给予指点。
 
按问题分类查看以前的贴子,很多这样的例子

http://www.delphibbs.com/delphibbs/dispq.asp?lid=1418998
 
在字段的OnGetText事件中写代码
procedure TDMForm.ADS_DJ_FPFPLYGetText(Sender: TField; var Text: String;
DisplayText: Boolean);
begin
case Sender.AsBoolean of
True:Text:='真';
False:Text:='假';
end;
end;
 
到这看看
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1418998
 
我做了一个类似于用友软件中的记帐凭证,其中表格中的是用的ehlib,金额输入是把snccurrency
控件绘出表格中。用的是Access数据库
我想要做如下的一个借贷方金额输入界面。
|--------------------|----------------------|
| 借方金额 | 贷方金额 |
|--------------------|----------------------|
| 123.00 | |
|--------------------|----------------------|
| | 123.00 |
|--------------------|----------------------|
借贷金额都存放mmoney字段中,用cd_c字段的值来区分借贷状态。当cd_c字段中的值为0时,
金额借示在借方金额中,当值为-1时,金额借在贷方金额中。要求是借贷金额不能同时处于
同一行中,必须要分行显示
 
把defaultdrawing设置为false
然后相应onDrawDataCell事件。。我自己写过一个例子
如下
表中有一个名字为bz的boolean类型字段,我在dbgrid中自己建立了一个名字为abc的列
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
OLDCLO: TCOLOR;
begin
dbgrid1.Canvas.Font.Color := $00000000;

if field.FieldName = 'abc' then //判断是否正在重绘abc字段
begin
dbgrid1.Canvas.Brush.Color := $00FFFFFF;
dbgrid1.Canvas.FillRect(rect);
oldclo := dbgrid1.Canvas.Pen.Color;
dbgrid1.Canvas.Pen.Color := $00FF0000;
if table1.FieldByName('BZ').AsBoolean = True then
begin //如果正在重绘abc并且bz=true 则在abc的位置画圆
DBGRID1.Canvas.Arc(rect.Left, rect.Top, rect.Right, rect.Bottom, rect.Left, rect.Top, rect.Left, rect.Top);
end
else
begin //abc的位置画叉
dbgrid1.Canvas.MoveTo(rect.Left, rect.Top);
dbgrid1.Canvas.LineTo(rect.Right, rect.Bottom);
dbgrid1.Canvas.MoveTo(rect.Left, rect.Bottom);
dbgrid1.Canvas.LineTo(rect.Right, rect.top);
end;
dbgrid1.Canvas.Pen.Color := oldclo;
end
else
begin //在重绘别的字段的时候 用颜色区分 bz的属性
if table1.FieldByName('BZ').AsBoolean = True then
begin
dbgrid1.Canvas.Brush.Color := $00A6E7F7;
end
else
begin
dbgrid1.Canvas.Brush.Color := $00B8BCE4;
end;
dbgrid1.DefaultDrawDataCell(rect, field, state); //在调用dbgrid的DefaultDrawDataCell过程重绘除abc以外的所有字段

end;
end;
 
zblue不大看得懂,能不能给点注释?或者还有其他的方法吗?
 
恩!!我忘记写注解了!!hehe
我可以把哦的源代码发给你。。你要么。。
其实就是根据数据的不同重绘dbgrid..hehe
 
原贴已经改变
 
在DataSet 的DisplayValue中写
 
lb_icesea79,请问你的方法是用在哪个事件中的?我试了一下放在Grid的DrawColumnCell中
但是没有成功
 

你改变定义OnDrawDataCell事件。。要把Dbgrid的defaultdrawing属性该为False
 
问题到底解决没有阿
 
不好意思,这么长时间没来了。问题没有解决,已经停下不做了。不过在这里多谢各位,多谢
大家对我的帮助。谢谢zblue这么长时间还惦记着我,分就送给你了。
 
后退
顶部