在表格中,我有2个字段,一个是Decimal#,另一个是Amount(Real)。
十进制#是枚举,其值为1-5,默认值为5.
要求:
1)每当为Decimal#字段(1-5)选择值时,取决于所选的值
金额字段中不允许使用小数。
Ex1:如果是十进制#= 2
Amount = 1.24
Ex2:如果十进制#= 3
Amount = 1.521
Ex1:如果是十进制#= 4
Amount = 3.0124
Ex1:如果是十进制#= 5
Amount = 8.02145
解决方案:我在Decimal#control level上编写了修改后的方法,因此根据为Decimal#选择的值,它将允许Amount字段的多个小数。现在工作得很好。
但如上例所示,网格中所有记录的Amount字段根据输入的最新行中的Decimal#而变化。
平均值,第一行:如果十进制#= 2,则数量= 1.02
第二行:如果十进制#= 3,则数量= 4.623
但是那个时候第一行也是限制为3虽然十进制#= 2。
请在这方面指导我。
答案 0 :(得分: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
只接受句点作为小数点,并且不接受千位分隔符,因此它不是用于数字转换的“用户友好”函数。您可能必须让自己考虑区域设置。