Обращение из проги к объектам отчета

отредактировано 01:33 Раздел: FastReport 2.xx VCL
Есть отчет, созданный и сохраненный в файле. В отчете имеются объекты типа Memo, Picture и т.д. и есть прога на Дельфи, которая должна в эти объекты отчета вставлять их содержимое, которое предварительно программно генерируется.

Мой вопрос в том, как из этой проги обратится к этим объектам внутри этого отчета?
На форму я вынес компонент TfrReport, сделал frReport1.LoadFromFile(......), а что дальше??

Комментарии

  • gpigpi
    отредактировано 01:33
    Смотрите http://www.fast-report.com/en/forum/?p=/discussion/1874 пункт 5.1
    Picture придётся передавать через файл. Имя файла можно передать в отчёт используя способы п. 5.1
  • отредактировано 01:33
    посмотрел указанную выше ссылку, попробывал - не вышло, возвращает NUUL. по-моему, объекты в отчете и переменные - не одно и то же.
    Я имел ввиду, что я создал в отчете прямоугольник текста, его имя Memo1. Его содержимое - текст. Теперь после того, как я загрузил сохраненный файл с отчетом в TfrReport через frReport1.LoadFromFile я хочу программно прочитать/поменять текст в том самом объекте Memo1, который я ранее создал в отчете, спозиционировал, настроил шрифты и все такое...
    Исходя из ссылки с примерами я написал: frReport1.Dictionary.Variables, но оно возвращает NULL.
    В связи с этим - вопрос: а можно конкретный пример решения моей задачи посмотреть?
  • gpigpi
    отредактировано March 2006
    Можно передать значение в переменную отчёта MemoText
    frReport1.Dictionary.Variables, а в самом Memo1 написать текст [MemoText]
    Непосредственно обращаться к элементам отчёта можно в FR 3.хх через FindObject
  • отредактировано 01:33
    так, уже лучше....
    Но, строка типа: frreport1.Dictionary.Value:='"'+'sddfsfs'+'"'; говорит при компиляции, что оно ReadOnly и поэтому доступа к нему в таком варианте нет.
    Может переменные надо как-то в самом дизайнере прописать или еще что там???
  • gpigpi
    отредактировано 01:33
    При использовании
    frreport1.Dictionary.Variables:='"'+'sddfsfs'+'"';
    переменная memovar должна быть описана в словаре данных отчёта
    При использовании frVariables в словарь данных переменную добавлять не нужно
    frVariables:='sddfsfs';

  • отредактировано 01:33
    Кстати, тут меня что-то дернуло попробывать FindObject в моей версии VCL 2.47 - оно там тоже прекрасно работает. Т.е. не только в 3.xx это есть!

    frReport1.FindObject('Memo1').Memo.Text:='dfgdshd';
  • gpigpi
    отредактировано 01:33
    Действительно, работает
    Тогда и рисунок можно загружать
    TfrPictureView(frReport1.FindObject('Picture1')).Picture.LoadFromFile('D:\1.bmp');
  • отредактировано 01:33
    Здравствуйте!

    Нижеследующее обращение к МЕМО работает хорошо.

    ReportFrm.frReport1.FindObject('Memo6').Memo.Text:='123авп';


    А вот обращение к Бэнду и его свойству Condition не работает

    ReportFrm.frReport1.FindObject.('GroupHeader1').Condition:='[DM.ReportQur."Predpr"]';


    Не подскажите, как добавить условие в GroupHeader1 в свойство Condition из кода программы?

    Заранее благодарен!
  • отредактировано March 2006
    Ну вообщем сам решил эту проблему. ;)

    К свойству Condition обратился через переменную, которую ранее создал в словаре данных. Переменная - V1. Ее вставил в "условие" (оно и есть Condition)

    ReportFrm.frReport1.Dictionary.Variables:='[DM.ReportQur."Predpr"]';

    причем это работает как с МЕМО, ну вобщем везде, где можно вставить переменную:

    ReportFrm.frReport1.FindObject('Memo6').Memo.Text:='зпт123';
    или
    ReportFrm.frReport1.Dictionary.Variables:='зпт123';

    Заранее вставив переменную V2 в МЕМО.
  • gpigpi
    отредактировано 01:33
    Можно было и через FindObject
    TfrBandView(frReport1.FindObject('GroupHeader1')).GroupCondition:='Copy(Company, 1, 2)';

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

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