0

我有一个 flexgrid 单元格没有处理我想要的欧洲数字格式。代码中的一些细节可能会从我这里抽象出来。

目前,我的控制面板“本地区域”设置为目标位置(丹麦/丹麦)。

我可以成功输入一个十进制值,例如丹麦格式的 12,36(美国格式当然是 12.36)。

该值被正确处理,并在传递给 SQL 并使用时进行处理。

之后,我假设在下面和这条线上发生了各种检查

.Redraw = flexRDDirect

在网格试图重绘的地方,我在这个单元格中的数字会进行一些转换。

一个例子

如果我输入 12,36,我相信逗号会以某种方式直接转换为小数点,并且首先使用 inplace 函数没有正确格式化从丹麦语到美国(反之亦然)。然后在某个时刻,单元格被重新验证,它假设这个值 12.36 仍然是丹麦格式,相当于一千二百三十六(但写得不好,因为千位分隔符的位置错误)。

所以现在我的值 12,36(或美国的 12.36)在丹麦语中变成了 12.36,如果格式正确(正确位置的千位分隔符),这实际上是 1.236,00(丹麦语),现在是我原始值的 100 倍12,36

那么在 vb6/flexgrid 中是否有一些东西明确地将这个逗号转换为小数点,然后尝试本地格式化(这基本上会将我的值乘以 100)?.Redraw = flexRDDirect在我看到值发生变化的那一行中,有什么东西被调用了吗?我怀疑某处有一些自定义代码试图适应本地区域格式本身,而不使用提供的函数。但也许不是!

所有这些都不是我的编码专业领域。如果需要更多详细信息,请告诉我。

4

1 回答 1

0

我发现了这个问题,正如我所怀疑的那样;其他东西试图转换数值并格式化它。出错的程序试图在数字上添加 0 和小数点。所以当 VB+region_settings 处理它(正确)时,它就搞砸了。

于 2013-01-21T16:13:57.990 回答