Search Results for

    Show / Hide Table of Contents

    Пример использования события OnBeforePrint

    Продемонстрируем вышесказанное на практике. Создадим отчет – список клиентов, в котором будут представлены только компании, название которых начинается с буквы "А".

    Создадим новый проект в Delphi, положим на форму компоненты TTable, TfrxDBDataSet, TfrxReport и настроим их:

    Table1:
    DatabaseName = 'DBDEMOS'
    TableName = 'customer.db'
    
    frxDBDataSet1:
    DataSet = Table1
    UserName = 'Customers'
    

    Зайдем в редактор отчета и создадим отчет следующего вида:

    Выделим дата-бэнд и переключимся на закладку "События" в инспекторе объектов:

    Чтобы создать обработчик события OnBeforePrint (именно оно нам подходит больше всего), надо сделать двойной щелчок мышью на пустом поле напротив имени события:

    При этом в текст скрипта добавляется пустой обработчик и дизайнер переключается на закладку "Код":

    Как видим, все очень похоже на то, как работает среда Delphi. Нам остается только вписать следующий код в тело обработчика:

    PascalScript:

    if Copy(<Customers."Company">, 1, 1) = 'A' then
      MasterData1.Visible := True else
      MasterData1.Visible := False;
    

    C++Script:

    if (Copy(<Customers."Company">, 1, 1) == "A")
      MasterData1.Visible = true;
    else
      MasterData1.Visible = false;
    

    Запустим отчет на выполнение и убедимся, что скрипт работает правильно:

    Поясним некоторые моменты. Вы можете назначить один обработчик сразу для нескольких событий разных объектов – в этом случае параметр Sender определяет тот объект, который инициировал событие (аналогично параметру Sender в событиях Delphi). Чтобы присвоить событию имя уже существующего обработчика, можно ввести его вручную в инспекторе объектов, а можно выбрать из выпадающего списка – опять же, аналогично тому, как это происходит в среде Delphi:

    Удаляется ссылка на обработчик просто – выделите нужное свойство и нажмите клавишу "Delete".

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