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.
Stellen wir die Eigenschaft des Bandes GroupHeader1.OutlineText gleich <Group."Company">. Beim Start sehen wir folgendes:
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:
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.