Не всегда срабатывает Freespace
Здравствуйте. после перехода с 3-го фастрепорта на 4-й возникла следующая проблема.
Есть код:
так вот. в этом коде часть FReport.Engine.FreeSpace в половине случаев кидает access violation. В FR3 всё работало замечательно.
в FReport уже есть подготовленный отчет (для ранее загруженного шаблона было уже выполнено FReport.PrepareReport(False)
Есть код:
FReport.LoadFromFile("шаблон");
FReport.PrepareReport(False);
if (FReport.PreviewPages.Count = 0) or
((FReport.Engine.FreeSpace > AHeight) and (AHeight > 0)) then
begin
end
так вот. в этом коде часть FReport.Engine.FreeSpace в половине случаев кидает access violation. В FR3 всё работало замечательно.
в FReport уже есть подготовленный отчет (для ранее загруженного шаблона было уже выполнено FReport.PrepareReport(False)
Комментарии
Всё зависит от того, что же именно вы делаете между этими Begin и End.
это будет сделать проблематично. итоговый отчет строится из маленьких частей. и эти части могут использоваться по несколько раз, между которыми вставляется разрыв и вот при вставке разрыва надо проверять поместится ли он на текущей странице для этого и используется FreeSpace
я пока убрал эту фичу и разрыв вставляется всегда (благо он не особо заметный).
Но баг остается или я просто не знаю как правильно использовать это свойство в данной версии
В том же AfterPrint или AfterCalcHeight вызываете MY_FUNCTION1(Engine.FreeSpace).
При этому у вас должен быть код при создании TfrxReport (можно в Form.onCreate)
и Код обработчика: Название функции - только в верхнем регистре.
О других способах прочитать Engine без глюков я не знаю. RTFM ( http://www.fast-report.com/ru/download/documentation/ )
спасибо за совет, но всё равно хотелось бы чтоб работало так как работало раньше, т.е. всегда