Beforeprint

отредактировано 16:26 Раздел: FastReport 4.0
Есть отчет
ReportTitle
PageHeader
MasterData1
Footer
ReportSummary
PageFooter

MasterData1 привязана к Dataset
в MasterData1 есть Мемо1 заполняемое по коду перед печатью
procedure Memo1OnBeforePrint()

if (что то) then 
 begin
  Memo1.Text = число
  SumAll := SumAll + число
 end

Так вот. При переходе на новую страницу Эта процедура выполняется ДВАЖДЫ т.к. SumAll больше на сумму первого числа на новой странице

ОТЧЁТ
1
2
3
-----новая страница
4
5
6
------Итог
25 (1+2+3+4+4+5+6)

FR 4.7.29 D6
По советуйте как быть.

Комментарии

  • stan5stan5 Новошахтинск
    отредактировано 16:26
    Fast Report 4.7.24 Studio (для Delphi7 тоже работает):


    var s: extended; //сама сумма

    procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
    begin

    s:=s+StrToFloat(<Sales."Cost">); // приращение суммы на число, которое выводится в мемке
    Memo7.Text:=FloatToStr(s); // вывод получившейся суммы в другую мемку для наглядности
    end;

    procedure Page1OnBeforePrint(Sender: TfrxComponent);
    begin
    s:=0; //инициализация
    end;

    begin

    end.



    Сумма считается корректно при переходе на новую страницу.

    Прикрепил 2 файлика .JPG для наглядности.
  • gpigpi
    отредактировано 16:26
    aaleo
    используйте Engine.SecondScriptCall чтобы определить повторный вызов
  • отредактировано 16:26
    Хотелось бы по подробней почитать про Engine. Где это можно сделать? Может не буду глупых вопросов задавать.
  • gpigpi
    отредактировано 16:26
    procedure Memo1OnBeforePrint();
    if (что то) and (not Engine.SecondScriptCall) then
    begin
    Memo1.Text = число;
    SumAll := SumAll + число;
    end;
  • отредактировано 16:26
    Простите если не понятно написал. Хотелось бы мануал по свойствам и методам Engine именно. С вопросом какой я задавал уже разобрался tnx gpi
  • отредактировано 16:26
    aaleo написал: »
    Простите если не понятно написал. Хотелось бы мануал по свойствам и методам Engine именно. С вопросом какой я задавал уже разобрался tnx gpi
    Скачайте хелп и смотрите описание класса TfrxCustomEngine.

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

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