2010-07-26 14 views
1

J'essaie de définir par programme les marges dans un rapport actif basé sur le numéro de page. Plus précisément, la première page doit avoir de petites marges (de sorte que la zone de texte la plus haute avec une adresse de retour correspond à l'alignement du logo de l'entreprise) et chaque page doit avoir des marges standard de 2,54 cm. J'ai lu des messages qui suggèrent que la détection du numéro de page réel peut être problématique, j'ai donc essayé d'utiliser les gestionnaires ReportStart et PageStart avec une logique très simple pour définir les marges.Paramètre de marge spécifique à la page dans AR3

Dans le code-behind pour le rapport, j'ai ajouté les deux gestionnaires et la valeur bool:

this.ReportStart += UFAnReportStart; 
     this.PageStart += UFAnPageStart; 
bool bFirstPage = true; 

Et puis on ajoute les deux callbacks comme suit:

private void UFAnReportStart(object sender, System.EventArgs eArgs) 
    {   
     this.PageSettings.Margins.Top = 0.1965278F; 
    } 

private void UFAnPageStart(object sender, System.EventArgs eArgs) 
    { 
     // every page after the first should have standard margins. 
     if (!bFirstPage) 
     {    
      this.PageSettings.Margins.Top = 2.54F; 
     } 
     bFirstPage = false; 
    } 

Cela ne semble pas avoir un effet sur les marges. Cette approche est-elle tout simplement erronée? Ou est l'PageSettings objet une propriété de rapport large?

Toutes les suggestions d'approches alternatives sont les bienvenues.

en utilisant Activereports3, version 5.2.1013.2.

Merci!

+0

J'ai aussi essayé de remplacer this.PageSettings.Margins.Top = 2.54F avec this.CurrentPage.Margins.Top = 2.54F mais cela ne fonctionne pas non plus ... – user246091

Répondre

3

Par défaut, les unités sont exprimées en pouces et non en CM. Le réglage de l'heure de conception n'affecte que ce qui est affiché dans le concepteur.

Ce qui suit a fonctionné pour moi:

public void ActiveReport_ReportStart() 
{ 
    rpt.PageSettings.Margins.Top = 0.05f; 
    rpt.PageSettings.Margins.Left = 0.05f; 
    rpt.PageSettings.Margins.Right = 0.05f; 
    rpt.PageSettings.Margins.Bottom = 0.05f;  
} 

public void ActiveReport_PageEnd() 
{ 
    // The first page (page index 0) will inherit the page margins set in ReportStart. 
    // We immediately reset the page margins in the first PageEnd event to ensure subsequent pages get the larger margins. 
    if (rpt.Document.Pages.Count == 0) 
    { 
     rpt.PageSettings.Margins.Top = 1.0f; 
     rpt.PageSettings.Margins.Left = 1.0f; 
     rpt.PageSettings.Margins.Right = 1.0f; 
     rpt.PageSettings.Margins.Bottom = 1.0f; 
    } 
} 

The ActiveReports Support Forums sont libres, actifs et contrôlés par notre équipe d'assistance afin qu'ils soient un excellent endroit pour poser des questions sur ActiveReports.

Hope this helps,

Scott Willeke 
GrapeCity inc. 
+0

Pouces? ... Américains stupides! ;RÉ. Merci pour la réponse mec. Je suis sûr que j'ai essayé de faire ce que vous avez suggéré plus tôt, mais en vain! Cela fait-il une différence s'il est rendu au format RTF ou PDF? Dans sera rendu à la fois dans des endroits différents dans notre application .... – user246091

+0

Peut-être aussi être compliqué par le fait qu'une boîte de texte qui commence à la page précédente continue sur le 2e ... d'après ce que j'ai lu, il semble que le positionnement des éléments soit absolu dans certains sens. Évidemment, je n'ai aucune idée de la façon dont fonctionnent les rapports actifs. : P – user246091

+0

Ive a essayé votre approche mais cela ne fait aucune différence. Les marges sont les mêmes sur chaque page. Cela me rend triste. Il semble vraiment que ça devrait marcher ...en fait, je soupçonne que quelque chose empêche les marges de s'afficher sur la deuxième page. En outre, Im faire ces changements dans VS 2010 ... pourrait-il potentiellement causer des problèmes pour cette ancienne version de AR? Le menu "Rapport" n'est même pas accessible pour un. : \ – user246091

0

Comme il se trouve, l'approche que vous suggérez fonctionne! Nous rendons le document à la fois PDF et RTF. Les marges sont correctes lorsqu'elles sont vues en PDF dans Adobe Reader, mais ne s'affichent pas en tant que RTF dans Word 2010; quelque chose que je n'avais pas remarqué.

Ach, heures perdues! : P

Cela, bien sûr, soulève la question de savoir pourquoi les marges ne montrent pas dans la version RTF-in ..?

+0

Je ne sais pas pourquoi ils ne fonctionnent pas dans RTF/Word. Peut-être que nous ne les transmettons pas à Word. Ils peuvent probablement réparer cela facilement. Envoyer un e-mail à [email protected] avec un échantillon et moi, ils devraient aider. N'hésitez pas à référencer ce fil SO aussi. –