Kontexte

Dieser Abschnitt beschreibt, wie PRINT+PLUS zur Laufzeit die Umgebung und die Daten im Speicher enthält.

Ideen

Es gibt grundsätzlich 3 verschiedene Kontexte (von Child-Kontexten können potenziell viele Instanzen vorhanden sein)

PrintContext

Der PrintContext repräsentiert die Ausführungsumgebung. Er enthält u.a.

  • die cobra-Umgebung (via PrintContext.CobraContext)

  • den Zugriff auf den Waitform-Manager (via PrintContext.WaitFormManager)

  • die geladene Konfiguration des Ausgabeformats (via PrintContext.Config)

// Zugriff auf aktuellen Benutzer
var user = printContext.CobraContext.UserShortname;
			
// Eine Messagebo anzeigen, die über dem Wartefenster ist
printContext.WaitFormManager.ShowMessageBox("blub");
			
// Zur Laufzeit (z.B. BeforeLoadData) noch die Konfiguration verändern
// Dadurch werden die JSON-Files nicht verändert, gilt nur einmalig
printContext.Config.ResultDialogMode = Ruthardt.PrintPlus.Model.Enumerations.ResultDialogModes.OpenLastDocument;

CurrentContext

Der CurrentContext repräsentiert den Ausgangsdatensatz der aktuellen Ausgabe. Bei Mehrfachausgaben wird für jeden Ausgangsdatensatz ein CurrentContext erzeugt und jede Ausgabe einzeln abgearbeitet.

Der CurrentContext enthält direkt alle Daten des Ausgangsdatensatzes und alle (rekursiv) übergeordneten Datensätze.

// Zugriff auf den aktuellen Datensatz, in diesem Beispiel die Adresse
var adresse = currentContext.Data;
var firma = adresse.GetStringValue("Firma")
			
// Zugriff auf geladene Parent-Datensätze
var partner = currentContext.ParentDataByPrefix["Partner"];
			
// Iterieren von Unterdatensätzen
var kontakte = currentContext.ChildContextByPrefix["Kontakte"];
foreach (var kontaktContext in kontakte)
{
	// Zugriff auf Daten des Unterdatensatz
	var kontakt = kontaktContext.Data;
				
	// Zugriff auf Parent des Unterdatensatzes
	var betriffProjekt = kontaktContext.ParentDataByPrefix["BetrifftProjekt"];
}

ChildContext

Wird nur benötigt in Skripten die auf der Child-Ebene aufgerufen werden.

Entspricht dann dem vorigen Beispiel ChildContextByPrefix

Last updated