如何让dbgrid负值显示为零

jskscxy 2007-05-24 09:49:45
如何让dbgrid负值显示为零或空

有好多列。
...全文
150 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jskscxy 2007-05-24
  • 打赏
  • 举报
回复
我的记录集是存储过程,以上方法都不行,我看还是在SQL里用case好了。
谢谢各位!
chtlovezj 2007-05-24
  • 打赏
  • 举报
回复
它自己有个重绘事件onDrawDataCell
procedure TForm1.DBGrid2DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if uppercase(Field.FieldName)='字段名' then
begin
DBGrid2.Canvas.FillRect(Rect);
if ADOTable1.Fieldbyname('字段名' ).value<0 then
DBGrid2.Canvas.TextOut(Rect.left+2,Rect.top+2,'0 ');
end;
end;
IDWB 2007-05-24
  • 打赏
  • 举报
回复
1楼正解,不过也可以用sql直接显示case...
zdlou 2007-05-24
  • 打赏
  • 举报
回复
很多方法呀
确定太多就用for循环吧
for i:=... to ... do
begin
if(DBGrid.columns.items[i].Field.asinteger<0)then
DBGrid.columss.items[i].field.asinteger:=0;
end;
...自已填上初值终值,不连续的就分开来判断。
chenzhuo 2007-05-24
  • 打赏
  • 举报
回复
在数据集里面设置吧,设置一个字段的OnGetText事件为

if Sender.AsInteger < 0 then Text := '0';

把其它需要处理的字段都指向这个事件!

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧