Пользовательские функции - как получить доступ к отчету?
В старом FR (2.xx) работал код CurReport.FindObject. Как получить из пользовательской функции доступ к отчету (в частности, для вызова FindObject etc)? Спасибо. Кстати, пример кода было бы неплохо включить в справку (вместо/вместе с формулировкой "// нужная логика ")
Комментарии
Есть реализация функции Если ее трассировать - то при вызове Instance == nil; ClassType == nil
Все это происходит при вызовах через com, внутри модуля, где реализуется собственно функция, нет формы (точнее, я не уверен, что там есть в момент вызова). Я думал, что ссылка на отчет есть внутри AScript (и в конструкторе можно до нее добраться), или внутри TfsRTTIModule - но навскидку найти ничего пока не удалось...
Раньше (в FR 2) работал такой вот код: Свойство CurReport, видимо, было внутри TfrFunctionLibrary (исходники не читал, честно говоря).
[rmSetUserHeaderById(HeaderId)]
А что вы подразумеваете под пользовательским заголовком?
Задача примерно такая: при построении отчета в TfrxRichView надо поместить rtf, который читается из базы данных (чтение там непростое, потому непосредстенно отчет доступа к ней не имеет). Раньше (в FR 2) функции передавалось имя TfrxRichView (напр., Rich1), далее внутри этой функции работал код, который находит rtf и помещает его внутрь этого Rich1: В FR4 мне не удается внутри функции получить доступ к этому самому объекту типа TfrxRichView (я не знаю, как это сделать). Если же возвращать rtf-строку как результат функции то не получается отобразить этот rtf.
Я сделал тестовый пример (больше - для проверки). Получается, что вот такой код работает а вот такой код - не работает Т.е. чтобы отобразить rtf из строки, надо создать TStringStream, просто присвоить ее в Lines.Text нельзя. Но я же не могу внутри скрипта FastReport создать TStringStream? Вот и получается, что мне надо внутри моей функции получить доступ к объекту отчета.
P.S. Я понимаю, что крайний случай - создать rtf-файл, в который поместить строку, вернуть в качестве значения функции его имя, и внутри скрипта отчета уже загрузить из этого файла rtf. Но по некоторым соображениям мне не хотелось бы использовать такой путь. Скажем так, если есть другая возможность нормальная возможность - предпочитаю обойтись без промежуточного файла.
Спасибо за ответы!
P.P.S.
Еще интересный момент. Из Delphi работает вот такой код: и Rtf показывается нормально. А при попытке написать в скрипте отчета получается access violation.
Rich1.RichEdit.Lines.Text:=
'{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fcharset0 Arial;}{\f1\fnil MS Sans Serif;}}'+
'\viewkind4\uc1\pard\lang1033\f0\fs16 test\par'+
'\b test\lang1049\b0\f1\par'+
'}';