два Subreport на одном Masterdata

отредактировано 08:57 Раздел: FastReport VCL
В отчёте есть MasterData, на котором рядом лежат 2 SubReport. Сами SubReport состоят просто из MasterData (у каждого может быть несколько строк).

ef5455a11652.png

Суть проблемы в том, как растянуть строку в основном MasterData и сами SubReport, чтобы высота их была одинаковая (максимальная из 2-х SubReport).
Если бы был один SubReport, то проблема решается установлением ему свойства "печать на бенде" (PrintOnParent = true) (если данных не много). Но с 2-мя SubReport получается так:

c6c9fe7d5e79.png

Буду рад любой помощи.

Комментарии

  • отредактировано 08:57
    Я делал так.
    1) Все Subreport можно сделать BringToFront, чтобы содержимое Subreport обработалось первым и движок смог определить реальную высоту содержимого.
    2) Внутри Subreport не забыть сделать MasterData.Stretched
  • отредактировано 08:57
    Nightmareterrible написал: »
    Я делал так.
    1) Все Subreport можно сделать BringToFront, чтобы содержимое Subreport обработалось первым и движок смог определить реальную высоту содержимого.
    2) Внутри Subreport не забыть сделать MasterData.Stretched

    Сделал всем Subreport BringToFront. MasterData внутри Subreport естественно стоит Stretched. Только это картины нисколько не изменило.
  • отредактировано 08:57
    Сможете приложить тестовый проект? В котором при нажатии на кнопку будет печататься этот отчёт?
  • отредактировано 08:57
    Nightmareterrible написал: »
    Сможете приложить тестовый проект? В котором при нажатии на кнопку будет печататься этот отчёт?

    Пример очень поверхностные, но суть думаю будет ясна.
  • отредактировано October 2015
    Нужно приложить также файл проекта с формой, на которой уже лежат нужные датасеты с заполненными SQL-запросами и хотя бы 1-й кнопкой Button1.
    Чтобы я не создавал самостоятельно ADOQuery1, ADOQuery2 и ADOQuery3.
    Без SQL-запросов немного непонятно, что конкретно нужно извлекать из БД. Да и отчёт удаляет при открытии страницу №1 (Page1), т.к. на ней содержатся неизвестные компоненты.
  • отредактировано 08:57
    Nightmareterrible написал: »
    Нужно приложить также файл проекта с формой, на которой уже лежат нужные датасеты с заполненными SQL-запросами и хотя бы 1-й кнопкой Button1.
    Чтобы я не создавал самостоятельно ADOQuery1, ADOQuery2 и ADOQuery3.
    Без SQL-запросов немного непонятно, что конкретно нужно извлекать из БД. Да и отчёт удаляет при открытии страницу №1 (Page1), т.к. на ней содержатся неизвестные компоненты.

    На странице 1 уже лежат компоненты, которые подключаются к базе test.mdb, которая лежит в том же архиве. Там 1 компонент для подключения (ADODatabase1) и 3 компонента для запросов (ADOQuery) (на этих запросах и строится пример отчёта.). Единственное что, в компоненте для подключения (ADODatabase1) в свойствах нажмите кнопку в DatabaseName и выберите файл test.mdb (т.к. путь к нему у вас будет другой)
  • отредактировано 08:57
    Теперь я понял.
    У меня FastReport 4.15, потому и не работает.
  • отредактировано October 2015
    Nightmareterrible написал: »
    Теперь я понял.
    У меня FastReport 4.15, потому и не работает.

    Сделал небольшой проектик. Может поможет.
    project
  • отредактировано October 2015
    Вообще должно было работать свойство "PrintOnParent" и subreport2 внутри subreport2, но это приводит к тому, что данные из subreport2 не отображаются (вложение). Если убрать Subreport2.PrintOnParent , то данные будут отображаться, но опять неправильно.
    project

    Похоже, что здесь я не знаю решения.
  • отредактировано 08:57
    Nightmareterrible написал: »
    Вообще должно было работать свойство "PrintOnParent" и subreport2 внутри subreport2, но это приводит к тому, что данные из subreport2 не отображаются (вложение). Если убрать Subreport2.PrintOnParent , то данные будут отображаться, но опять неправильно.
    project

    Похоже, что здесь я не знаю решения.

    Если я правильно понял, вы имеете в виду SubReport внутри SubReport? Мне сначала тоже пришла в голову такая идея, но попробовав и почитав форумы понял, что так делать нельзя. FastReport не поддерживает несколько уровней вложенности, т.е. если в SubReport вложить SubReport1, то данные из SubReport1 отображаться не будут.
  • отредактировано 08:57
    Видимо мне просто повезло, что в моей программе такой подход работает (скорее всего, у меня только в одном из внутренних SubReport стоит PrintOnParent).
    Тогда я вижу только один вариант - использовать прямую обработку через движок (описание есть в инструкции, но я этого не делал).
    Если менять Memo.height после ArferData, то этот подход будет работать только если у Memo свойство StretchMode = smDontStretch.
    И придётся поиграться с BrindToFront и SendToBack ("На передний план" и "на задний план").
    Уж извините, что не смог дать простое решение.

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

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