Anwendung des Objektes Outline

Navigation:  Bericht im FR-Designer > Script >

Anwendung des Objektes Outline

Previous pageReturn to chapter overviewNext page

Das Objekt Outline stellt den Reporttree dar, welcher im Vorschaufenster angezeigt werden kann. Beim Klick auf ein Element des Baums wird man auf die damit verbundene Reportseite geleitet. Um mit Outline arbeiten zu können muss man das Script nutzen, weil manche Bänder einen Mechanismus besitzen, der es ihnen erlaubt, den Baum automatisch zu erstellen. Betrachten wir zwei Beispiele der Nutzung von Outline. Einmal mit Hilfe der Bänder und aus dem Script.

 

Um den Baum automatisch zu erstellen, besitzen fast alle Bänder die Eigenschaft OutlineText in die die Zeile des Ausdrucks eingefügt wird. Der Ausdruck wird berechnet und der Wert wird beim Druck des Bandes in den Baum eingefügt. Die Hierarchie der Elemente im Baum entspricht der, der Bänder im Report. Das heißt im Baum werden Haupt, und untergeordnete Elemente vorhanden sein, die den Haupt und Untergeordneten Bändern im Report entsprechen (z. B. ein Report mit zwei Ebenen oder mit Gruppen). Betrachten wir die Arbeit mit dem Baum am Beispiel des Reportes mit Gruppen, welchen wir vorhin hatten.

 

clip0202

 

Stellen wir die Eigenschaft des Bandes GroupHeader1.OutlineText gleich <Group."Company">. Beim Start sehen wir folgendes:

 

clip0203

 

Beim Klick auf ein beliebiges Element des Baumes, werden wir auf die entsprechende Seite des Reportes geleitet. Das Element wird oben im Fenster angezeigt.

 

Fügen wir eine zweite Ebene in den Reporttree ein. Hierfür müssen wir die Eigenschaft des Bandes MasterData.OutlineText gleich <Group."OrderNo"> stellen. Der Baum sieht nun wie folgt aus:

 

clip0204

 

Wie man sieht, ist nun die Navigation über die Bestellnummern möglich. Die Hierarchie der Elemente im Baum, entspricht der Hierarchie der Elemente im Report.

 

Schauen wir uns die Erstellung eines analogen Baumes mit Hilfe eines Scriptes und ohne die Nutzung der Eigenschaft OutlineText. Bereinigen wir die Eigenschaften OutlineText beider Bänder und erstellen zwei Bearbeiter der Ereignisse GroupHeader1.OnBeforePrint und MasterData1.OnBeforePrint:

 

PascalScript:

 

procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);

begin

 Outline.LevelRoot;

 Outline.AddItem(<Group."Company">);

end;

 

procedure MasterData1OnBeforePrint(Sender: TfrxComponent);

begin

 Outline.AddItem(<Group."OrderNo">);

 Outline.LevelUp;

end;

 

begin

 

end.

 

 

C++ Script:

 

void GroupHeader1OnBeforePrint(TfrxComponent Sender)

{

 Outline.LevelRoot;

 Outline.AddItem(<Group."Company">);

}

 

void MasterData1OnBeforePrint(TfrxComponent Sender)

{

 Outline.AddItem(<Group."OrderNo">);

 Outline.LevelUp;

}

 

{

 

}

 

Starten wir den Report und vergewissern uns, dass dieser analog dem vorherigen Report ist, in dem der Baum automatisch erstellt wurde. Sehen wir uns nun die Erstellung des Baumes an.

 

Die Methode Outline.AddItem fügt dem aktuellen Knoten im Baum, einen weiteren untergeordneten hinzu und macht ihn zum aktuellen. Ruft man AddItem ein paar mal auf, so erhält man eine "Treppe" folgender Art

 

Item1

 Item2

   Item3

     ...

 

Zur Steuerung des aktuellen Elementes dienen "Outline LevelUp" und "LevelRoot". Die erste Methode verschiebt das Element eine Ebene höher. Das Script

 

Outline.AddItem('Item1');

Outline.AddItem('Item2');

Outline.AddItem('Item3');

Outline.LevelUp;

Outline.AddItem('Item4');

 

würde folgenden Baum erstellen.

 

Item1

 Item2

   Item3

   Item4

 

Sprich, das Element Item4 wird dem Element Item2  untergeordnet. Die Methode LevelRoot verschiebt das aktuelle Element in die Wurzel. Hier ein Beispiel, das Script

 

Outline.AddItem('Item1');

Outline.AddItem('Item2');

Outline.AddItem('Item3');

Outline.LevelRoot;

Outline.AddItem('Item4');

 

würde folgenden Baum erstellen

 

Item1

 Item2

   Item3

Item4

 

Nach diesen Erklärungen sollte klar sein wie unser Report funktioniert. Jedesmal beim Druck des Gruppenkopfes wird die Wurzel zum aktuellen Element und der Unternehmensname eingefügt. Danach wird die Liste der Bestellungen gedruckt und jede Bestellung wird als untergeordnetes Element hinzugefügt. Damit die Bestellnummern auf einer Ebene liegen und nicht in Form einer "Treppe" dargestellt werden. verschieben Sie diese im Script eine Ebene höher mit Hilfe von Outline.LevelUp.