Десятичная точность

В форме у меня есть 2 поля: одно - десятичное число, а другое - сумма (реальная).

Decimal # — это перечисление со значениями от 1 до 5, значение по умолчанию — 5.

Требование:

1) Всякий раз, когда выбрано значение для поля Десятичный номер (1-5), в зависимости от выбранного значения

В поле «Сумма» не должно быть десятичных знаков.

Пример 1: если десятичное число = 2

      Amount    = 1.24

Пример 2: если десятичное число = 3

      Amount    = 1.521

Пример 1: если десятичное число = 4

      Amount    = 3.0124

Ex1: если десятичное число = 5

      Amount    = 8.02145

Решение: я написал модифицированный метод на уровне управления Decimal #, поэтому в зависимости от значения, выбранного для Decimal #, он позволит использовать столько десятичных знаков для поля Amount. Сейчас это работает нормально.

Но, как показано в приведенных выше примерах, поле «Сумма» всех записей в сетке изменяется в соответствии с десятичным номером в последней введенной строке.

Означает, первая строка: если Decimal # = 2, тогда Amount = 1,02

Вторая строка: если десятичное число = 3, то сумма = 4,623.

Но в этот раз первая строка также принимает ограничение как 3, хотя десятичное число # = 2.

Пожалуйста, направьте меня в этом отношении.


person Tejashree S    schedule 07.12.2011    source источник


Ответы (1)


Извините, но нет надежного способа иметь разное количество десятичных знаков в элементе управления сеткой.

Изменение текущей записи может повлиять на другие записи, отображаемые в сетке.

Для группового управления количество десятичных знаков легко регулируется следующим образом:

 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)
}

Тип данных DecimalStrextended должен быть выровнен по правому краю.

К сожалению, str2num принимает только точку в качестве десятичной точки и не принимает разделители тысяч, поэтому это не "удобная для пользователя" функция для числового преобразования. Возможно, вам придется сделать свой собственный, чтобы учесть региональные настройки.

person Jan B. Kjeldsen    schedule 07.12.2011
comment
Привет, Ян, спасибо за ответ. Я уже пробовал это, и да, это влияет на все остальные записи, отображаемые в сетке... :( - person Tejashree S; 08.12.2011