2011-12-07 96 views
1

在一个表格中,我有2个字段,其中一个是Decimal#,另一个是Amount(Real)。小数精度

十进制#是从1-5和默认值枚举具有值将是5.

要求:

1)每当值被选择为十进制#字段(1-5),这取决于值来选择

无小数点的应金额字段被允许。

练习1:如果十进制#= 2

 Amount = 1.24 

练习2:如果小数#= 3

 Amount = 1.521 

练习1:如果十进制#= 4

 Amount = 3.0124 

练习1:如果十进制#= 5

 Amount = 8.02145 

解决方案:我在Decimal#控制级别上编写了修改方法,因此根据为Decimal#选择的值,它将允许Amount字段有很多小数。现在,这很好,工作很好。

但正如上面的例子所示网格的所有记录的金额场的变化,根据小数#在最新的行中输入。

单元,第一排:如果小数#= 2,则金额= 1.02

第二行:如果小数#= 3,则金额= 4.623

不过那个时候第一排也需要限制为3虽然十进制#= 2.

请在这方面指导我。

回答

0

对不起,但有在网格控制不同数量的小数没有可靠的方法。

当前记录的改变可能会影响在网格中显示的其他记录。

对于一组控制的小数位数很容易像这样调整:

amountCtrl.noOfDecimals(trans.decimalNo); 

在网格中,你可以尝试使用一个编辑方法与一个字符串值。你将不得不自己做转换。

edit DecimalStr amountStr(boolean set = false, DecimalStr _amountStr = '') 
{ 
    if (set) 
    { 
     this.Amount = str2num(_amountStr); 
    } 
    return num2str(this.Amount, 0, this.decimalNo, 1, 0) 
} 

扩展数据类型DecimalStr应该右对齐。

不幸的是str2num只接受句点作为小数点,不接受千分位器,所以它不是数字转换的“用户友好”功能。您可能必须让您自己考虑地区设置。

+0

嗨一月,感谢您的答复。我已经试过这一点,是的,它会影响所有在网格中显示的其他记录... :( –

+0

回答更新。 –