0

Est-ce que quelqu'un sait comment créer un rapport dans FastReport de sorte que lorsque l'utilisateur modifie l'orientation de la page, tous les en-têtes de colonne et les données sont modifiés automatiquement? Je n'ai pas trouvé de mécanisme d'ancrage là-bas. Peut-être que je peux le faire pendant l'exécution? Mais alors j'ai besoin d'attraper l'événement de changement d'orientation de page en quelque sorte. Quelqu'un peut-il aider?Modification de l'orientation de la page FastReport dans Delphi

Répondre

2

Je ne sais pas ce que la question est: les bandes sont magnétiques Par défaut, les bordures de page correspondent à la nouvelle largeur de page. Mais si vous souhaitez que les objets frxMemoview se déplacent et se redimensionnent en fonction du nouveau format de page, vous devez utiliser l'événement beforeprint du rapport pour recalculer et déplacer ou dimensionner les composants du rapport.

Si vous disposez d'un rapport pouvant être imprimé en mode portrait ou paysage, la méthode la plus simple consiste à créer une mise en page pour le mode portrait et une autre pour le mode paysage. Vous pouvez afficher un printersetupdailog avant de charger le rapport et, en fonction de l'orientation, charger le format portrait ou paysage.

Ce n'est peut-être pas le moyen le plus propre. Construire votre runtime de rapport dans le code est une autre option et recalculer chaque composant dans le rapport en est une autre. Mais ils impliquent beaucoup de codage et que se passe-t-il si l'utilisateur sélectionne "Letter" au lieu de "A4"?

Regards, Teo Distributeur FR en Hollande.

+0

I pourrait le calculer par programme, il y a probablement quelque chose comme la propriété Page.Width? Je pourrais l'utiliser pour trouver le format de la page en cours. Par ailleurs, comment puis-je appeler une boîte de dialogue de configuration d'impression? En Rave, il est appelé par défaut, mais il n'y a pas de tel dialogue en FR, non? L'utilisateur peut modifier l'orientation de la page lorsqu'il a déjà commencé à consulter le rapport, mais j'ai alors besoin d'observer un événement de changement d'orientation de la page. Comment puis je faire ça? –

0

Vous pouvez:

  • utiliser la propriété Align de chaque TfrxMemoview ...
  • faire avec Script
0

Il est parfois nécessaire de modifier les paramètres de la page de rapport (par exemple, pour modifier l'alignement ou la taille du papier) à partir d'un code. La classe TfrxReportPage contient les propriétés suivantes, définir la taille de la page:

property Orientation: TPrinterOrientation default poPortrait; 

    property PaperWidth: Extended; 

    property PaperHeight: Extended; 

    property PaperSize: Integer; 

Le «PaperSize» ensembles de propriétés format papier. C'est l'une des valeurs standard définies dans Windows.pas (par exemple, DMPAPER_A4). Si une valeur est affectée à cette propriété, FastReport remplit automatiquement les propriétés «PaperWidth» et «PaperHeight» (taille du papier en millimètres). Si vous définissez la valeur DMPAPER_USER (ou 256) en tant que format, cela signifie que le format de papier personnalisé est défini. Dans ce cas, les propriétés «PaperWidth» et «PaperHeight» doivent être renseignées manuellement.

L'exemple suivant montre, comment modifier les paramètres de la première page (on suppose que nous avons déjà un rapport):

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

Sur BeginDoc vous pouvez accéder aux propriétés à l'aide de (frxPrincipal.FindObject('Page1') as TfrxReportPage).PaperSize := DMPAPER_A4;

Questions connexes