效果图:
数据库设计:
设计视图:
方法一使用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