Создание скриптов из программы

отредактировано May 2004 Раздел: FastReport 2.xx VCL
Задача заключается в том, чтобы программно создать скрипт, меняющий в процессе построения отчета свойства компонента Table1: TfrBDETable, расположенного на диалоговой форме отчета FastReport.
Следующий код на Delphi создает скрипт для объекта Table1.

frReport1.LoadFromFile('Untitled.frf');
// Формирование скрипта
t := TfrBDETable(frReport1.FindObject('Table1'));
t.Script.Add('begin');
t.Script.Add('Table1.DatabaseName := [DataBase1];');
t.Script.Add('Table1.TableName := [TableName1];');
t.Script.Add('end');
// Задание переменных
frVariables := 'DBDEMOS';
frVariables := 'employee.db';
// Просмотр отчета
frReport1.ShowReport;

Но при построении отчета выдается ошибка, что имя таблицы пусто. Хотя скрипт реально создается. Проблема здесь не в программном создании скрипта.
При создании скрипта объекта Table1: TfrBDETable в дизайнере, отчет также не строится.
Насколько я понимаю, надо создавать скрипт для обработки события (OnActivate) диалоговой формы, на которой расположен объект Table1: TfrBDETable. Он должен выглядеть примерно так:

begin
Table1.DatabaseName := [DataBase1];
Table1.TableName := [TableName1];
end

В дизайнере отчетов его легко можно создать. И этот скрипт реально работает при построении отчета. Т.е. отчет формируется нормально. Но как это сделать из программы на Delphi не понятно. И можно ли вообще это сделать?

Понятно, что в Delphi можно сделать следующее:

t := TfrBDETable(frReport1.FindObject('Table1'));
t.Table.DatabaseName := 'DBDEMOS';
t.Table.TableName := 'employee.db';

Но хотелось бы программно на Delphi сформировать скрипт, который будет сам заполнять свойства компонента Table: TfrBDETable. Реально ли это сделать?

P.S. Являюсь зарегистрированным пользователем FastReport

Комментарии

  • отредактировано 07:45
    Да, в данном случае надо делать скрипт для Page.OnActivate. Это будет выглядеть так:

    p := TfrPage(frReport1.Pages[0]); // здесь нужный индекс
    p.Script.Add('begin');
    p.Script.Add('Table1.DatabaseName := [DataBase1];');
    p.Script.Add('Table1.TableName := [TableName1];');
    p.Script.Add('end');

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.