PANTHEON™ manual

 Categories
 PANTHEON Ajutor - Bun venit
[Collapse]PANTHEON
 [Collapse]Ghiduri pentru PANTHEON
  [Collapse]Ghid pentru PANTHEON
   [Collapse]Setări
    [Expand]Subiecte
    [Expand]Articole
    [Expand]POS
    [Expand]Fabricare
    [Expand]Personal
     Calendar
    [Expand]Financiare
    [Expand]Vamă
    [Collapse]Program
     [Expand]Tipuri de Documente
     [Collapse]Rapoarte în PANTHEON
       Setări în Panoul de Administrare
      [Expand]Registrul Raporturilor
       Previzualizare imprimare
      [Expand]Designer de rapoarte
      [Expand]Crearea Raportelor
      [Expand]Grupuri și Agregate
      [Expand]Formatare și Evidențiere
       Rapoarte Încapsulate (Subrapoarte)
      [Expand]Specificațiilor printurilor în PANTHEON
      [Collapse]Script
        "Bună, lume!" Script
        Folosind variabile, câmpuri de bază de date și funcții agregate
        Folosind Obiecte de Raport în Script
        Evenimente
        Exemplu de utilizare a evenimentului "OnBeforePrint"
        Tipărirea unei sume de grup în antetul grupului
        Totalul acumulat
        "OnAfterData" Eveniment
        Obiecte de Serviciu
        Folosind obiectul "Motor"
       [Expand]FUNCȚII PANTHEON pentru FastReport
       [Expand]Exemple cu Tabele și Interogări
       Considerații privind designul raportului
      Texte Document
      Metode de livrare
     [Expand]Cărți de fidelitate
     [Expand]Panoul de Administrare
     [Expand]Componente Dashboard
      Rapoarte de tabloul de bord
      Analiză ad-hoc
     [Expand]ARES
      SQL editor
    [Expand]Documentație
    [Expand]Schimbă utilizatorul
   [Expand]Comenzi
   [Expand]Produse
   [Expand]Fabricare
   [Expand]POS
   [Expand]Serviciu
   [Expand]Financiare
   [Expand]Personal
   [Expand]Analitică
   [Expand]Desktop
   [Expand]Ajutor
   [Expand]Mesaje și Avertizări
   [Expand]Programe suplimentare
   [Expand]Produse vechi
  [Expand]Ghid pentru PANTHEON Retail
  [Expand]Ghid pentru PANTHEON Vet
  [Expand]Ghid pentru PANTHEON Fermă
 [Expand]Manuale de utilizare pentru PANTHEON
[Expand]PANTHEON Web
[Expand]PANTHEON Granule
[Expand]Site utilizator

Load Time: 734,3764 ms
print   |
Label

Folosind obiectul "Engine"

Folosind obiectul "Engine"

Am spus deja că obiectul “Engine” reprezintă motorul raportului, care gestionează construcția raportului. Procesul de aranjare a bandelor pe o pagină poate fi gestionat folosind proprietățile și metodele motorului. Mai întâi, puțină teorie.

Diagrama de mai jos arată diferite dimensiuni ale paginii raportului.

_img242

Dimensiunile fizice ale paginii sunt proprietățile “PaperWidth” și “PaperHeight”, vizibile în inspectorul de obiecte atunci când pagina este selectată. Așadar, dimensiunea unei pagini A4 este de 210 x 297mm.

“PageWidth” și “PageHeight” sunt dimensiunile regiunii imprimabile, care este de obicei mai mică decât dimensiunile fizice ale paginii. Dimensiunea regiunii imprimabile depinde de proprietățile paginii raportului “LeftMargin”, “TopMargin”, “RightMargin” și “BottomMargin”. Dimensiunea regiunii imprimabile în pixeli este returnată de funcțiile “Engine.PageWidth” și “Engine.PageHeight”.

În cele din urmă, “FreeSpace” este înălțimea spațiului liber pe o pagină. Dacă există o bandă "Page Footer" pe pagină, înălțimea acesteia este luată în considerare atunci când se calculează “FreeSpace”. Această înălțime este returnată în pixeli de funcția “Engine.FreeSpace”. Rețineți că după afișarea următoarei benzi, spațiul liber este redus pe pagină, acest lucru este luat în considerare atunci când se calculează “FreeSpace”.

Cum sunt construite paginile raportului? Nucleul FastReport afișează benzile pe o pagină atâta timp cât există suficient spațiu liber. Când nu mai rămâne spațiu liber, banda “Page Footer" este imprimată (dacă este necesar) și se creează o nouă pagină goală. Așa cum s-a spus deja, după afișarea următoarei benzi, înălțimea spațiului liber este redusă. În plus, afișarea următoarei benzi începe din poziția curentă, care este definită de coordonate pe axa X și axa Y. Poziția curentă este returnată de “Engine.CurX” și “Engine.CurY” respectiv. După imprimarea următoarei benzi, CurY crește automat cu înălțimea benzii imprimate. După ce se creează o pagină nouă, “CurY” este egal cu “0.” “CurX” se schimbă atunci când se imprimă rapoarte cu coloane multiple.

“Engine.CurX” și “Engine.CurY” sunt disponibile nu doar pentru citire, ci și pentru scriere. Aceasta înseamnă că benzile pot fi mutate prin incrementarea sau decrementarea acestor valori. De exemplu, într-un raport asemănător cu acesta:

_img243

Poate fi imprimat în următorul mod:

_img244

Aceasta se realizează prin scrierea unui handler pentru evenimentul “OnBeforePrint” al benzii:

procedură MasterData1OnBeforePrint(Sender: TfrxComponent);

începe

  Engine.CurX := Engine.CurX + 5;

sfârșit;

Schimbarea “CurY” poate face ca benzile să se suprapună, de exemplu:

_img245

Realizată prin acest script:

procedură MasterData1OnBeforePrint(Sender: TfrxComponent);

începe

  Engine.CurY := Engine.CurY - 15;

sfârșit;

Metoda “Engine.NewPage” inserează o întrerupere de pagină în orice punct necesar dintr-un raport, după care imprimarea continuă de la partea de sus a noii pagini de ieșire. În exemplul nostru, o întrerupere poate fi inserată după imprimarea celui de-al doilea record:

procedură MasterData1OnDupăPrint(Sender: TfrxComponent);

începe

   dacă <Line> = 2 atunci

     Engine.NewPage;

sfârșit;

Rețineți că am folosit evenimentul “OnAfterPrint” (adică, după ce banda a fost imprimată). De asemenea, rețineți că variabila de sistem “Line” returnează numărul secvențial al recordului.

Metoda “Engine.NewColumn” inserează o întrerupere de coloană în rapoartele cu coloane multiple. Dacă nu mai există coloane libere pe pagină, atunci se creează o pagină nouă.

Factură cu ordine de plată


Exemplul următor este prezentat pe printout-ul de ordine și facturi cu ordine de plată. Acestea sunt disponibile doar pentru legislația slovenă și croată. Astfel de rapoarte sunt '2U2 - Factură - UPN - Formular' pentru slovenă și '2U7 - Factură - HUB 3A - Formular' pentru croată legislație. Puteți vedea designul acestor rapoarte deschizând designerul de rapoarte din registrul de rapoarte.

Vrem să imprimăm întotdeauna ordinul de plată exact în partea de jos a paginii. Pentru a forța acest comportament, setăm poziția verticală curentă (Engine.CurY) a benzii de sumar a raportului astfel încât să existe suficient spațiu exact pentru a-l afișa pe această pagină. Facem acest lucru cu următorul cod:

procedură UPNOnBeforePrint(Sender: TfrxComponent);
începe
  ...
  Engine.CurY := Engine.CurY + Engine.FreeSpace - UPN.Height - 1;
sfârșit; 

Când se creează raportul, ordinul de plată se va suprapune textului existent dacă este prea înalt. Așadar, trebuie să corectăm codul nostru pentru a imprima ordinul de plată pe pagina următoare în acest caz.

procedură UPNOnBeforePrint(Sender: TfrxComponent);
începe
  ...
  dacă Engine.CurY > Engine.CurY + Engine.FreeSpace - UPN.Height - 1 atunci
    Engine.NewPage;  
  Engine.CurY := Engine.CurY + Engine.FreeSpace - UPN.Height - 1;
sfârșit; 



Rate this topic
Was this topic usefull?
Comments
Comment will also bo visible in forum!