округление то есть?

отредактировано 03:49 Раздел: FastReport 4.0
Есть в 4й версии нормальное округление(допустим до тысячных)?
Кстати, если я в поле заношу данные формулой, то форматирование не работает!!! почему?

procedure Memo43OnBeforePrint(Sender: TfrxComponent);
begin
if Engine.FinalPass then Memo43.Text:=(Memo37.value*100)/Memo38.value;
end;

Комментарии

  • отредактировано 03:49
    ssvd написал: »
    Есть в 4й версии нормальное округление(допустим до тысячных)?
    Округление можно осуществлять через форматирование (Forrmat/FormatFloat).
    Не стоит забывать , что округление зависит от текущего режима установленного для FPU(Set8087CW/SetRoundMode).
    ssvd написал: »
    Кстати, если я в поле заношу данные формулой, то форматирование не работает!!! почему?

    procedure Memo43OnBeforePrint(Sender: TfrxComponent);
    begin
    if Engine.FinalPass then Memo43.Text:=(Memo37.value*100)/Memo38.value;
    end;
    Вы присваиваете значение как текст, а форматирование работает только для выражений.
    Т.е. : Memo43.Text:= '' ;
    Еще стоит отметить что мемки из которых берется значение Value должны быть расположены выше по дереву отчета(т.е. перед Memo43 в списке), иначе Value не будет инициализировано.



  • отредактировано December 2009
    написал: »
    Округление можно осуществлять через форматирование (Forrmat/FormatFloat).
    Не стоит забывать , что округление зависит от текущего режима установленного для FPU(Set8087CW/SetRoundMode).
    Вы присваиваете значение как текст, а форматирование работает только для выражений.
    Т.е. : Memo43.Text:= '' ;
    Еще стоит отметить что мемки из которых берется значение Value должны быть расположены выше по дереву отчета(т.е. перед Memo43 в списке), иначе Value не будет инициализировано.

    спасибо!
    я вычисление делаю вторым проходом по отчету, те мемки уже заполнены!

    Делаю как Вы сказали, но выдается ошибка:
    memo31: Ошибка в вырвжении '0,0494989883': ';' expected

    Memo31.text:='';
  • отредактировано 03:49
    написал: »
    Округление можно осуществлять через форматирование (Forrmat/FormatFloat).
    Не стоит забывать , что округление зависит от текущего режима установленного для FPU(Set8087CW/SetRoundMode).
    Вы присваиваете значение как текст, а форматирование работает только для выражений.
    Т.е. : Memo43.Text:= '' ;
    Еще стоит отметить что мемки из которых берется значение Value должны быть расположены выше по дереву отчета(т.е. перед Memo43 в списке), иначе Value не будет инициализировано.

    все таки можно показать округление на примере! а то я как не мучил FormatFloat, получается бред на выходе!
    И что за Set8087CW/SetRoundMode и где это устанавливается?
  • отредактировано 03:49
    справился, вот так, думаю стоит это включить в fastreport!
    http://www.reportingfor.com/ru/news.php?extend.76
  • отредактировано 03:49
    ошибка у Вас выскакивала потому, что в системе разделитель дробной части запятая(выражения работают с точкой).

    Мне вообще непонятно зачем число приводит к тесту, чтобы потом получить число и отформатировать в текст ? :)


    отключите форматирование у мемки и сразу форматируйте в скрипте:
    Memo31.text:= Format('%8.2f', (<frxDBDataset1."SUMM">*100)/Memo9.value );

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.