首页 > 其他分享 >delphi 在cxgrid中展示物料各自的显示精度

delphi 在cxgrid中展示物料各自的显示精度

时间:2023-03-04 15:33:27浏览次数:29  
标签:物料 index delphi cxgrid AProperties 设置 Properties 精度 Accuracy

效果图:

 

 数据库设计:

 

 设计视图:

 

 方法一使用TcxEditRepository控件.双击TcxEditRepository控件,进行添加.这里选择新增货币格式.

 

 为每一种样式设置属性:

 

接下来关联需要设置的列.但不是在面板里直接设置,而是通过代码

 

选中需要设置的列,然后在其OnGetProperties事件中完成业务代码:

procedure TForm1.cxGrid1DBTableView1QtyGetProperties(Sender:
  TcxCustomGridTableItem; ARecord: TcxCustomGridRecord; var AProperties: TcxCustomEditProperties);
var
  index, Accuracy: Integer;
begin
  index := cxGrid1DBTableView1DisplayAccuracy.Index; //精度所在的列号
  Accuracy := cxGrid1DBTableView1.DataController.GetValue(ARecord.Index, index); //取得精度值
  case Accuracy of  //根据精度值,设置不同的显示样式
    0:   //无小数位
      AProperties := cxEditRepository1CurrencyItem0.Properties;
    1:    //一位小数,以下以此类推.因为精度值的取值范围是0-4,所以不会出现其他值
      AProperties := cxEditRepository1CurrencyItem1.Properties;
    2:
      AProperties := cxEditRepository1CurrencyItem2.Properties;
    3:
      AProperties := cxEditRepository1CurrencyItem3.Properties;
    4:
      AProperties := cxEditRepository1CurrencyItem4.Properties;
  end;
end;

这里说明一下,DisplayAccuracy这个字段必须要有,但你可以设置它的visible为false隐藏它.否则你只能通过其他途径来取它的精度值.

缺陷与解决方案:

如下两张图,当用户点击表头进行排序,或者使用过滤器时,格式就乱套了.

 

 

 解决方案:

1.禁用排序和过虑器

 

 或者你直接一点,干脆就别显示表头也行: OptionsView -Hearder:False

 

标签:物料,index,delphi,cxgrid,AProperties,设置,Properties,精度,Accuracy
From: https://www.cnblogs.com/yoooos/p/17178382.html

相关文章