Search Results for

    Show / Hide Table of Contents

    Событие 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, то результатом будет высота объекта, в котором содержится выражения, а не его значение.

    Back to top © 1998-2024 ООО «Быстрые отчеты»