Объекты Report и Engine
Кроме объектов, которые содержатся в отчете, в скрипте определены две переменные: Report и Engine.
Report
Переменная Report возвращает ссылку на текущий отчет.
Список методов
| Метод | Описание |
|---|---|
object Calc(string expression)
|
Вычисляет выражение и возвращает значение.
При вызове этого метода первый раз выражение компилируется, что требует некоторого времени. |
object GetColumnValue(string complexName)
|
Возвращает значение поля источника данных. Имя должно быть представлено в форме Источник.Поле.
Если поле имеет значение |
object GetColumnValueNullable(string complexName)
|
Возвращает значение поля источника данных.
В отличие от предыдущего метода, не выполняет преобразование |
Parameter GetParameter(string complexName)
|
Возвращает параметр отчета с указанным именем.
Имя может быть составным при обращении к вложенному параметру: |
object GetParameterValue(string complexName)
|
Возвращает значение параметра отчета с указанным именем. |
void SetParameterValue(string complexName, object value)
|
Устанавливает значение параметра отчета с указанным именем. |
object GetVariableValue(string complexName)
|
Возвращает значение системной переменной, например, Date.
|
object GetTotalValue(string name)
|
Возвращает значение итога, определенного в окне Данные, по его имени.
|
DataSourceBase GetDataSource(string alias)
|
Возвращает источник данных, определенный в отчете, по его имени. |
Engine
Объект Engine представляет собой движок, управляющий построением отчета (процессом размещения бэндов на странице).
Свойства объекта
| Свойство | Описание |
|---|---|
float CurX |
Текущее смещение координат по оси X.
Этому свойству можно присваивать значение, чтобы смещать печатаемые объекты. |
float CurY |
Текущая позиция печати по оси Y.
Этому свойству можно присваивать значение, чтобы смещать печатаемые объекты. |
int CurColumn |
Номер текущей колонки в многоколоночном отчете.
Первая колонка имеет номер |
int CurPage |
Номер текущей печатаемой страницы.
Это значение можно получить из системной переменной |
float PageWidth |
Ширина страницы минус размер левого и правого полей. |
float PageHeight |
Высота страницы минус размер верхнего и нижнего полей. |
float PageFooterHeight |
Высота подвала страницы (и всех его дочерних бэндов). |
float ColumnFooterHeight |
Высота подвала колонки (и всех ее дочерних бэндов). |
float FreeSpace |
Размер свободного места на странице. |
bool FirstPass |
Возвращает true, если выполняется первый (или единственный) проход отчета.
Количество проходов можно получить из свойства |
bool FinalPass |
Возвращает true, если выполняется последний (или единственный) проход отчета.
|
На рисунке ниже представлено изображение страницы отчета и название свойств, которые возвращают то или иное измерение страницы.

- Свойства
Engine.PageWidthиEngine.PageHeightопределяют размер области печати, которая почти всегда меньше физических размеров страницы. - Размер области печати определяют поля страницы, которые задаются свойствами страницы отчета
LeftMargin,TopMargin,RightMargin,BottomMargin. - Свойство
Engine.FreeSpaceопределяет высоту свободного места на странице. Если на странице есть бэндПодвал страницыего высота учитывается при вычисленииFreeSpace. Следует учесть, что после вывода очередного бэнда свободное место на странице уменьшается, что учитывается при вычисленииFreeSpace.
Как происходит формирование страниц готового отчета? Ядро FastReport выводит бэнды на страницу до тех пор, пока на ней остается свободное место, достаточное для вывода бэнда. Когда свободного места не остается, печатается бэнд Подвал страницы (если он есть) и формируется новая пустая страница. Как уже говорилось, после вывода очередного бэнда высота свободного места уменьшается. Кроме того, вывод очередного бэнда начинается с текущей позиции, которая определяется координатами по оси X и Y. Эта позиция возвращается в свойствах Engine.CurX, Engine.CurY. После печати очередного бэнда позиция CurY автоматически увеличивается на высоту напечатанного бэнда. После формирования новой страницы позиция CurY = 0. Позиция CurX изменяется при печати многоколоночных отчетов.
- Свойства
Engine.CurXиEngine.CurYдоступны не только для чтения, но и для записи. Это значит, что можно смещать бэнды вручную, используя одно из подходящих событий. Пример использования этих свойств смотрите в разделеПримеры.