Событие OnAfterData |
Это событие генерируется после того, как объект отчета был наполнен данными, к которым он привязан. Событие удобно использовать для анализа значения поля БД или выражения, которое содержится в объекте. Дело в том, что это значение помещается в служебную переменную Value, значение которой доступно только в этом событии. Так, имея два объекта "Текст" с содержимым [Table1."Field1"] и [<Table2."Field1"> + 10], удобно анализировать значение этих выражений, ссылаясь на переменную Value:
PascalScript:
if Value > 3000 then Memo1.Color := clRed
C++ Script:
if (Value > 3000) Memo1.Color = clRed;
вместо того, чтобы писать что-то вроде:
PascalScript:
if <Table1."Field1"> > 3000 then Memo1.Color := clRed
C++ Script:
if (<Table1."Field1"> > 3000) Memo1.Color = clRed;
Более того, использование Value вместо выражения дает возможность написания одного универсального обработчика события OnAfterData и подключения его к нескольким объектам.
Одно замечание – если в объекте содержится несколько выражений, например [expr1] [expr2] – в переменную Value попадет значение последнего выражения.
Событие OnAfterData отлично подходит для вычисления высоты и ширены таких объектов как "Текст", т.е. если в скрипте отчета нужно получить реальное значение высоты объекта (растягиваемый объект), а в объекте "Текст" используется выражение, то можно использовать такой скрипт в событии OnAfterData:
PascalScript:
var MemoWidth: Extended;
begin MemoWidth := TfrxMemoView(Sender).CalcWidth; end;
C++ Script: float MemoWidth;
MemoWidth = TfrxMemoView(Sender).CalcWidth;
Если данный код поместить в событие OnBeforePrint, то результатом будет высота объекта, в котором содержится выражения, а не его значение. |