0

Кто-нибудь знает, как создать отчет в FastReport, чтобы при изменении страницы ориентации страницы все заголовки столбцов и данные автоматически фиксировали новую ширину страницы? Я не мог найти там якорный механизм. Может быть, я смогу это сделать во время выполнения? Но тогда мне нужно каким-то образом поймать событие изменения ориентации страницы. Может ли кто-нибудь помочь?Изменение ориентации страницы FastReport в Delphi

ответ

2

Я не знаю, что вопрос: Bands магнитные к границам страницы по умолчанию, поэтому они соответствуют новой ширине страницы.

Но если вы хотите, чтобы объекты frxMemoview перемещались и изменялись в соответствии с новым размером страницы, вы должны использовать событие beforeprint отчета для пересчета и перемещения или изменения компонентов отчета.

Если у вас есть отчет, который может быть напечатан как в портретном, так и в ландшафтном, самым простым способом построить это будет макет для портрета и один для пейзажа. Перед загрузкой отчета вы можете показать printersetupdailog и в зависимости от ориентации загрузить портретную или альбомную макет.

Возможно, это не самый чистый способ. Построение времени выполнения отчета в коде - это еще один вариант, и пересчет каждого компонента в отчете является другим. Но они связаны с большим количеством кодирования, и что, если пользователь выбирает «Letter» вместо «A4»?

С уважением, Teo Торговый автомат FR в Голландии.

+0

I мог бы вычислить его программно, возможно, что-то вроде свойства Page.Width? Я мог бы использовать его для поиска текущего формата страницы. Кстати, как я могу вызвать диалог настройки печати? В Rave он вызывается по умолчанию, но в FR нет такого диалога, верно? Пользователь может изменить ориентацию страницы, когда он уже начал просматривать отчет, но мне нужно как-то поймать событие изменения ориентации страницы. Как я могу это сделать? –

0

Вы можете:

  • использовать свойство Align каждого TfrxMemoView ...
  • сделать это с Script
0

Иногда необходимо изменить параметры страницы отчета (например, изменить выравнивание или размер бумаги) из кода. Класс TfrxReportPage содержит следующие свойства, определяющие размер страницы:

property Orientation: TPrinterOrientation default poPortrait; 

    property PaperWidth: Extended; 

    property PaperHeight: Extended; 

    property PaperSize: Integer; 

В «PaperSize» задает формат бумаги. Это одно из стандартных значений, определенных в Windows.pas (например, DMPAPER_A4). Если присвоено значение этому свойству, FastReport автоматически заполняет свойства «PaperWidth» и «PaperHeight» (размер бумаги в миллиметрах). Установка значения DMPAPER_USER (или 256) в качестве формата означает, что задан нестандартный формат бумаги. В этом случае свойства «PaperWidth» и «PaperHeight» должны быть заполнены вручную.

В следующем примере показано, как изменить параметры первой страницы (предполагается, что у нас уже есть отчет):

Pascal:

var 
Page: TfrxReportPage; 
{ the first report’s page has [1] index. [0] is the Data page. } 
Page := TfrxReportPage(frxReport1.Pages[1]); 
{ modify the size } 
Page.PaperSize := DMPAPER_A2; 
{ modify the paper orientation } 
Page.Orientation := poLandscape; 

C++:

TfrxReportPage * Page; 
// the first report’s page has [1] index. [0] is the Data page. 
Page = (TfrxReportPage *)frxReport1.Pages[1]; 
// modify the size 
Page->PaperSize = DMPAPER_A2; 
// modify the paper orientation 
Page->Orientation = poLandscape; 
0

На BeginDoc i вы можете использовать свойства от него, используя (frxPrincipal.FindObject('Page1') as TfrxReportPage).PaperSize := DMPAPER_A4;

 Смежные вопросы

  • Нет связанных вопросов^_^