DBGridEh如何实现 单元格中数字非0 显示空 如果有值则显示0.00 格式

crazy_boom 2024-01-24 01:14:38

delphi 10.3.3

Ehlib10.0

如何实现DBGridEh1表格中 金额一列 如果值为0 则显示 空白  如果有值则显示0.00 这个格式

我将金额字段的DisplayFormat 设置成:#.##   这样可以实现 值为0 显示空白 但是当有值的时候

11.50 显示成了11.5;

0.5 显示成了.5  ; 

12.00 显示成了12 ;

如何能显示成 11.50   0.50  12.00 这样  值为0的 显示空白

...全文
231 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueStorm 02-05
  • 打赏
  • 举报
回复 1

可以使用定制化的绘制GridCell的方式,
如果Cell里面的数值为0, 就不绘制, 否则就调用DefaultDrawColumnCell来绘制这个cell:

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
  FieldNames: TStringList;
begin
  FieldNames := TStringList.Create;
  FieldNames.DelimitedText := 'a,b,c,d';
  DBGRidEh.Columns.Clear;
  DBGRidEh.DefaultDrawing := False; //由自己来绘制GridCell
  DBGRidEh.OnDrawColumnCell := DBGridEhDrawColumnCell; //定制化的绘制Cell的方法

  for I := 0 to FieldNames.Count-1 do
  begin
    with DBGRidEh.Columns.Add do
    begin
      Title.Caption := FieldNames[I];
      FieldName := FieldNames[I]
    end;
  end;
  FieldNames.Free;

  for I := 0 to DBGRidEh.Columns.Count-1 do
  begin
    DBGRidEh.Columns[I].DisplayFormat := '0.00';
    DBGRidEh.Columns[I].Width := 80;
  end;
end;

procedure TForm1.DBGridEhDrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
var
  DBGrid : TDBGridEh;
  DataSet: TDataSet;
begin
  DBGrid  := TDBGridEh(Sender);
  DataSet := DBGrid.DataSource.DataSet;
  if DataSet.FieldByName(Column.FieldName).AsFloat <> 0.0 then //值为0时不绘制
  begin
    DBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Query.Close;
  Query.Open('select a=11.50, b=0.5, c=12.00, d=0.0');
end;

img

crazy_boom 02-10
  • 举报
回复
@BlueStorm 收到 感谢
daigua1987 01-24
  • 打赏
  • 举报
回复

DBGridEh 如果要显示空白 好像是null值,0还是显示为0 小数点显示问题你可以试试#.00

crazy_boom 01-24
  • 举报
回复
@daigua1987 #.00 如果是0 就显示 .00了 希望是0的时候 显示空白
daigua1987 01-24
  • 举报
回复
@crazy_boom 这个 你可以在SQL语句上面调整 如果是0 你就把值改成null

5,386

社区成员

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

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