5,901
社区成员




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的 显示空白
可以使用定制化的绘制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;
DBGridEh 如果要显示空白 好像是null值,0还是显示为0 小数点显示问题你可以试试#.00