Pantheon User Manual

 Sadržaj
 Glavna strana- Dobrodošli u PANTHEON uputstva
[Collapse]PANTHEON
 [Collapse]PANTHEON priručnici
  [Collapse]Priručnik za PANTHEON
   [Expand]Pantheon Hosting
   [Expand]Pomoć
   [Collapse]Podešavanja
    [Expand]Subjekti
    [Expand]Identi
    [Expand]POS
    [Expand]Proizvodnja
    [Expand]Zaposleni
     Kalendar
    [Expand]Računovodstvo
    [Expand]Carina
    [Collapse]Program
     [Expand]Vrste dokumenata
     [Collapse]Ispisi u PANTHEON-u
       Podešavanja
       Vrste ispisa
       Grupisanje i numerisanje
      [Expand]Funkcije
       Radno okruženje
       Specifičnosti ispisa
       Sistemske promenljive
       Uvoz i izvoz ispisa
      [Collapse]Skripta
        "Zdravo, Svete!" Skripta
        Korišćenje promenljivih, polja baze podataka i agregatnih funkcija
        Dejstva
        Primer korišćenja "OnBeforePrint" događaja
        Štampanje zbirne sume u zaglavlju grupe
        Trenutni Ukupni Iznos
        "OnAfterData" Događaj
        Servisni objekti
        Korišćenje "Engine" objekta
       Tabele i upiti na ispisima
       Objekti
       Izrazi
     [Expand]Oblici ispisa
     [Expand]Šifarnik tekstova za vrste dokumenata
      Načini dostave
     [Expand]ARES
     [Expand]Administratorska konzola
     [Expand]Elementi kontrolne table
      Izveštaji na kontrolnoj tabli
      Ad-hoc analiza
     [Expand]Kartice poverenja
     [Expand]Izveštaji kontrolne table
     [Expand]Trenutni korisnik Ctrl - U
     [Expand]Ad-hoc analize
      SQL editor
     [Expand]Poštanska knjiga
      Klasifikacijski plan
    [Expand]Dokumentacija
   [Expand]Narudžbine
   [Expand]Roba
   [Expand]Proizvodnja
   [Expand]POS
   [Expand]Servis
   [Expand]Novac
   [Expand]Kadrovi
   [Expand]Radna površina
   [Expand]Analize
   [Expand]Korisničke strane
   [Expand]Poslovni saveti
    Dodatno
   [Expand]Plansko-analitički alat ZEUS
   [Expand]Dodatni programi
   [Expand]Obaveštenja programa
   [Expand]Zvanična mišljenja
   [Expand]Dodatni programi
   [Expand]Sistemska okolina
    Rečnik izraza
   [Expand]Zastareli produkti
  [Expand]Vodič po DataLab PANTHEON™ Farming
  [Expand]Vodič za mobilni POS
  [Expand]Vodič za PANTHEON Vet
 [Expand]PANTHEON korisnički priručnici
[Expand]PANTHEON Web
[Expand]PANTHEON Granule

Load Time: 765.618 ms
print   |
Label

Korišćenje "Engine" objekta

Korišćenje "Engine" objekta

Već smo rekli da "Engine" objekat predstavlja motor izveštaja, koji upravlja konstrukcijom izveštaja. Proces raspoređivanja banda na stranici može se upravljati korišćenjem svojstava i metoda motora. Prvo malo teorije.

Donji dijagram prikazuje različite dimenzije stranice izveštaja.

_img242

Fizičke dimenzije stranice su svojstva "PaperWidth" i "PaperHeight", vidljiva u inspektoru objekata kada je stranica izabrana. Tako je veličina A4 stranice 210 x 297mm.

"PageWidth" i "PageHeight" su dimenzije štampane oblasti, koja je obično manja od fizičkih dimenzija stranice. Veličina štampane oblasti zavisi od svojstava stranice izveštaja "LeftMargin", "TopMargin", "RightMargin" i "BottomMargin". Veličina štampane oblasti u pikselima vraća se funkcijama "Engine.PageWidth" i "Engine.PageHeight".

Na kraju, "FreeSpace" je visina slobodnog prostora na stranici. Ako postoji "Page Footer" band na stranici, njegova visina se uzima u obzir prilikom izračunavanja "FreeSpace". Ova visina se vraća u pikselima funkcijom "Engine.FreeSpace". Imajte na umu da se nakon prikazivanja sledećeg banda slobodni prostor smanjuje na stranici, to se uzima u obzir prilikom izračunavanja "FreeSpace".

Kako se konstruiraju stranice izveštaja? FastReport jezgro prikazuje bande na stranici sve dok ima dovoljno slobodnog prostora. Kada više nema slobodnog prostora, "Page Footer" band se štampa (ako je potrebno) i kreira se nova prazna stranica. Kao što je već rečeno, nakon prikazivanja sledećeg banda visina slobodnog prostora se smanjuje. Štaviše, prikaz sledećeg banda počinje od trenutne pozicije, koja je definisana koordinatama na X-osi i Y-osi. Trenutna pozicija se vraća sa "Engine.CurX" i "Engine.CurY" respektivno. Nakon štampanja sledećeg banda, CurY se automatski povećava za visinu štampanog banda. Nakon što se kreira nova stranica, "CurY" je jednako "0." "CurX" se menja prilikom štampanja višekolonnih izveštaja.

"Engine.CurX" i "Engine.CurY" su dostupni ne samo za čitanje već i za pisanje. To znači da se bande mogu pomerati povećanjem ili smanjenjem ovih vrednosti. Na primer, u izveštaju koji liči na ovaj:

_img243

Može se štampati na sledeći način:

_img244

To se postiže pisanjem handler-a za događaj "OnBeforePrint" banda:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

  Engine.CurX := Engine.CurX + 5;

end;

Promena "CurY" može izazvati preklapanje bandova, na primer:

_img245

Postignuto ovim skriptom:

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

  Engine.CurY := Engine.CurY - 15;

end;

Metoda "Engine.NewPage" umetne prekid stranice na bilo kojoj potrebnoj tački u izveštaju, nakon čega štampanje nastavlja od vrha nove izlazne stranice. U našem primeru prekid može biti umetnut nakon štampanja drugog zapisa:

procedure MasterData1OnAfterPrint(Sender: TfrxComponent);

begin

   if <Line> = 2 then

     Engine.NewPage;

end;

Imajte na umu da smo koristili događaj "OnAfterPrint" (to jest, nakon što je band štampan). Takođe imajte na umu da sistemska promenljiva "Line" vraća redni broj zapisa.

Metoda "Engine.NewColumn" umetne prekid kolone u višekolonim izveštajima. Ako više nema slobodnih kolona na stranici, tada se kreira nova stranica.

Faktura sa Uplatnicama


U sledećem primeru prikazana je štampana verzija naloga i faktura sa uplatnicama. Dostupni su samo za slovenačko i hrvatsko zakonodavstvo. Takvi izveštaji su '2U2 - Faktura - UPN - Obrazac' za slovenačko i '2U7 - Faktura - HUB 3A - Obrazac' za hrvatsko zakonodavstvo. Možete videti dizajn ovih izveštaja otvaranjem dizajnera izveštaja iz registra izveštaja.

Želimo da štampamo uplatnicu uvek tačno na dnu stranice. Da bismo primorali ovo ponašanje, postavljamo trenutnu vertikalnu poziciju (Engine.CurY) banda sažetka izveštaja tako da postoji tačno dovoljno prostora da se prikaže na ovoj stranici. To radimo sa sledećim kodom:

procedure UPNOnBeforePrint(Sender: TfrxComponent);
begin
  ...
  Engine.CurY := Engine.CurY + Engine.FreeSpace - UPN.Height - 1;
end; 

Kada se kreira izveštaj, uplatnica će preklapati postojeći tekst ako je previsoka. Tako da moramo ispraviti naš kod da štampamo uplatnicu na sledećoj stranici u ovom slučaju.

procedure UPNOnBeforePrint(Sender: TfrxComponent);
begin
  ...
  if Engine.CurY > Engine.CurY + Engine.FreeSpace - UPN.Height - 1 then
    Engine.NewPage;  
  Engine.CurY := Engine.CurY + Engine.FreeSpace - UPN.Height - 1;
end; 



Oceni ovu temu
Da li je ova tema korisna?
Komentari
Komentari će biti vidljivi i na forumu!