[Inhalt] [Zurück] [Weiter] [Thema] [Index]

RelToReport()


Syntax:

RelToReport (RL R, B quer, S hdrstr, R start, S hdrfunc, S tupfunc) : Report
R: eine Relation
quer: False=Hoch- True=Querformat
hdrstr: freier String, der an hdrfunc übergeben wird
start : erste Seitennummer, z.B. 1
hdrfunc: Zeichnet den statischen Anteil jeder Seite
tupfunc: stellt ein Tupel in gewünschter Form auf einer Seite dar

Beispiel:

RP := RelToReport (R, False, "", 1, "MakeHeader", "DrawTup")

Beschreibung:

Erzeugt eine Report aus der Relation R.

Der Report wird so viele Seiten im Format
tt 80, DINA4, PORTRAIT (quer= False), bzw. 80, DINA4, LANDSCAPE (quer= True (siehe NewPage() enthalten, wie für das Ausgeben aller Tupel aus R nötig ist.

Die Rahmen der Seiten, also der Anteil von ihnen, der nicht von den Tupeln abhängt, wird über die Azur-Funktion hdrfunc erzeugt. Ist dieser Parameter leer, oder die Funktion nicht vorhanden, werden keine Seitenrahmen gezeichnet. hdrfunc muss die Parameter Page P, String hdrstr und Real seitenr haben. Der Seite kann mittels SetPageNettto() ein maximaler Zeichenbereich mitgegeben werden. An diesem beginnt die Ausgabe der Tupel. Ist hdrfunc leer, beginnt die Ausgabe oben, links, und endet unten jeweils um 1cm versetzt. Für jede erzeugte Seite wird diese Funktion einmal aufgerufen.

Die Tupel werden über die Funktion tupfunc auf einer Seite ausgegeben. Diese muss die Parameter Page P, Tupel tup und GeoPoint lage haben und einen GeoPoint zurückgeben. Pro Tupel von R wird diese Funktion einmal aufgerufen. Die Tupel werden ab der Position lage (in cm, Nullpunkt links, unten) gezeichnet und können sich von dort in X- und Y-Richtung beliebig erstrecken. Der Punkt, ab dem das nächste Tupel beginnen soll, wird zurückgeliefert. tupfunc muss vorhanden sein und richtige Parameter und den richtigen Rückgabetyp haben.

Siehe auch Seitenumbruch() und PrintReport().

Vollständiges Beispiel:

MachHeader (Page P, String hdrstr, Real seitenr)
   p1 := {1,1}
   p2 := P.PageMaxPos() - {1,1}
   P.FrameOnPage (p1, p2, 0.01)
   p3 := {p2.XKoo(), p1.YKoo()}
   P.DrawTextOnPage (p3, "Seite "+seitenr.GStr(), NORMAL, "RECHTS")
   P.DrawTextOnPage (p2, hdrstr, NORMAL, "RECHTS")
   netto := GeoRange ({1.5, 1.5}, p2 - {0.5,0.5})
   P.SetPageNetto (netto)
END

DrawTupel (Page P, Tupel tup, GeoPoint lage) : GeoPoint
   p1 := lage
   P.DrawTextOnPage (p1, tup.GetText("NUMMER"), NORMAL)
   P.DrawTextOnPage (p1+{10,0}, tup.GetText("WWJ"), NORMAL)
   p1 := p1 + {0, 0.5}
   RETURN p1
END

AZUR ()
   R := OpenRel("infile")
   Rep := RelToReport (R, False, "Mein Report", 1, "MachHeader", "DrawTupel")
   Rep.PrintReport ("dereport.pdf", "PDF")
END



toposoft 24.10.2025