Проблема с объектом Engine
При попытке запихнуть код, содержащий ссылки на объект Engine (Engine.NewPage, Engine.ShowBand(Child1)) на событие OnBeforePrint в PageFooter или любой объект, на нем находящийся, и запуске отчета на выполнение происходит следующее:
- Если отчету назначен ДатаСет, то вылетает AV.
- Если датасета нету, то улетает дельфи. Сообщений о ошибке не вылетает. просто тихо и спокойно завершается процесс delphi32.exe.
- Если отчету назначен ДатаСет, то вылетает AV.
- Если датасета нету, то улетает дельфи. Сообщений о ошибке не вылетает. просто тихо и спокойно завершается процесс delphi32.exe.
Комментарии
у меня мастер дата переносится на вторую страницу, мне перед page-footer'ом и после конца master-data нужно вставить бенд с дополнительной строкой. Я бы сделал это в page_footer, но эта строка нужна впритык к masterdata, а не в конце (*исправлено*)страницы.
Высоту PageFooter получается менять в событиях тех бэндов, которые печатаются до PageFooter
( у меня KeepFooter = True);
Child1.Visible:=Engine.FreeSpace<MasterData1.Height*2+Child1.Height;
Но, посколько FreeSpace на странице может быть довольно много (1/3) где-то то туда может поместится и чайлд и мастер.дата даже 2 раза.
Child1.Visible:=(Engine.FinalPass) and (Engine.FreeSpace < MasterData1.Height*2+Child1.Height+Footer1.Height);
Не знаю, как получится с Footer1.Height в выражении, приведённом выше.
Если не будет корректно работать, то на первом проходе Footer1.Height нужно сохранить в переменной и
Child1.Visible:=(Engine.FinalPass) and (Engine.FreeSpace < MasterData1.Height*2+Child1.Height+MyVariable);
f - boolean - глобальная.
RecordCount - переменная в которой содержится полное кол-во рядов мастер-дата.
Всем спасибо за помощь