Mit Hilfe von eigens erstellten .dll-Dateien können die Funktionen aus der Maskito-Funktionsbibliothek individuell ergänzt werden. Pro Formular kann eine eigens programmierte Funktion in form einer Klassenbiliothek angehängt werden.
Diese Funktionalität ist in Web- und Windows-Formularen möglich
In den Ressourcen hinterlegte .dll-Datei für ein Windows-Formular
Eine dynamische Programmbibliothek (.dll) kann den Funktionsumfang für Formulare um individuelle Features erweitern. Diese Dateien werden mit den gängigen Produkten erstellt, z. B. Microsoft Visual Sudio. Zum Beispiel sind die public-Funktionen einer cs-Datei später im Formular verwendbar, wenn sie vom Typ Dictionary sind und einen Wert vom Typ Dictionary liefern.
Die resultierende dll-Datei wird im Formular verknüpft per Projekteigenschaften > Register PlugIns, wo der Pfad zur dll-Datei eingefügt wird. Die Funktionen werden dann im Formular an der Stelle aufgerufen, wo sie benötigt werden: per Funktionseditor im Then-Bereich > Option Aufrufe > Externe Funktionen aufrufen. Hier werden der Pfad zur dll-Datei angegeben und die gewünschte Funktion ausgewählt.
Der Dialog zur Nutzung von Funktionen aus dll-Dateien
Alternativ kann die dll-Datei auch als Ressource im Formular mitgegeben werden. In diesem Fall ist im Dialog "Externe Funktionen aufrufen" die gewünschte dll-Datei anzugeben, die aus den Ressourcen angewendet werden soll. Ist dies erfolgt, werden die enthaltenen Funktionen zur Auswahl gestellt.
Im unteren Bereich des Dialogs werden die an die ausgewählte Funktion zu übergebenden Werte eingetragen.
DLL-Methodenaufruf zulassen, siehe Server-Konfiguration
Per neuer Programmierschnittstelle DLL-Web-Request können Web-Formulare ab Version Maskito SIX mit zusätzlicher, individueller Funktionalität ausgestattet werden.
Die Verwendung der selbst erstellten .dll .NET Funktionen werden auf dem Server (IIS-Webserver) in einer formularspezifischen AppDomain ausgeführt. Die Integration und Erstellung der Funktionsaufrufe ist die gleiche wie in den Windows-Formularen, die mit dem FormView gestartet werden. Die erstellten Klassenbibliotheken müssen mit einem .NET Framework erstellt werden. Core oder .NET Standard werden noch nicht unterstütz.
Verwalten und konfigurieren Sie also die .dll-Ressourcen wie im Abschnitt [„Externe Funtkionen (.dll) für Windows-Formulare“](/de/Externe_Funktionen_(#externe-funktionen-dll-f%C3%BCr-windows-formulare).
Vorrausetzung zum Ausführen von .dll-Funktionen auf dem FormServer ist, dass der Administrator des FormServers die Methodenaufrufe vorab aktivieren muss. Erst dann sind selbst geschriebene Methodenaufrufe auf dem gesamten FormServer für die Webformulare möglich.
Verwenden Sie die Methodenaufrufe nur dann, wenn es nötig ist. Versuchen Sie, viele Funktionen gesammelt in einem Methodenaufruf unterzubringen. Jeder Methodenaufruf aus dem Webformular löst einen Request zum Server aus (mit Übergabe der Methodenargumente) und wartet dann auf das Ergebnis. Wenn das Ergebnis vom Server am Client (Webformular) angekommen ist, werden die Informationen vom Formular bearbeitet/integriert.
Diese WebRequest-Methodenaufrufe sind demnach sehr viel langsamer als die der Windows-Formulare. Zwischen jedem Aufruf einer einzelnen Funktion wird der Server dazu kontaktiert, welcher die Funktion für das Webformular ausführt.
Da der FormServer nun die eigens erstellten Methoden aufruft, hat der Programmierer von dort viel mehr Möglichkeiten, um mit anderen Systemen auf .NET Sprache zu kommunizieren. Auf diese Weise können alle möglichen Systeme (z. B. Datenbanken, SAP-Systeme, Textdateien, etc.) angesprochen und in das Formular integriert werden.
Es können KEINE Windows-Dialoge für die Ausgabe von Informationen verwendet werden, da der Funktionsaufruf auf dem Server selbst ausgeführt wird.
Das erstmalige Ausführen einer Methode führt zur Initialisierung der formularspezifischen AppDomain. In dieser AppDomain wird eine Instanz der .DLL Klasse erzeugt. Nachfolgende Funktionsaufrufe werden dann direkt von dieser Instanz die Public deklarierten Methoden und Funktionen aufrufen können. Die Instanz der Klasse lebt so lange auf dem Server, bis das Formular mit dem FormDesigner neu hochgeladen/aktualisiert wird, oder der IIS-Webserver die Webanwendung neu startet. Achtung: Der IIS-Webserver lässt auch Webanwendung einfrieren, wenn in einem gewissen Zeitraum keine Aktivitäten stattgefunden haben. Berücksichtigen Sie diese Umstände bei der Verwendung von Instanzen über längere Zeiträume hinweg.
Mögliche Programmiersprachen:
public class Demo
{
public void MeineMethode1(Dictionary<string, string> dic)
{
// Ausgabe aller übergebenen Wertepaare
StringBuilder Content = new StringBuilder();
foreach (KeyValuePair<string, string> kvp in dic)
Debug.WriteLine(kvp.Key + ": " + kvp.Value);
}
public Dictionary<string, string> MeineFunktion2(Dictionary<string, string> dic)
{
// Hinzufügen "txt_name" falls nicht schon vorhanden
if (!dic.ContainsKey("txt_name"))
dic.Add("txt_name", string.Empty);
dic["txt_name"] = "Mein neuer Wert für das Formular";
return dic;
}
public Dictionary<string, string> MeineFunktion3()
{
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("txt_name", "Wert für Formular");
return dic;
}
}
Public Sub MeineMethode1(ByVal dic As Dictionary(Of String, String))
' Ausgabe aller übergebenen Wertepaare
Dim Content As New StringBuilder
For Each kvp As KeyValuePair(Of String, String) In dic
Debug.WriteLine(kvp.Key & ": " & kvp.Value)
Next
End Sub
Public Function MeineFunktion2(ByVal dic As Dictionary(Of String, String)) As Dictionary(Of String, String)
' Hinzufügen "txt_name" falls nicht schon vorhanden
If Not dic.ContainsKey("txt_name") Then
dic.Add("txt_name", String.Empty)
End If
dic("txt_name") = "Mein neuer Wert für das Formular"
Return dic
End Function
Public Function MeineFunktion3() As Dictionary(Of String, String)
Dim dic As New Dictionary(Of String, String)
dic.Add("txt_name", "Wert für Formular")
Return dic
End Function
Die eigens geschriebenen Methoden liefern also ein Dictionary vom Typ <string,string> zurück, welches die Wertepaare für die zurückzuschreibenden Werte beinhaltet.
Ist ein Controlname nicht vorhanden, so versucht das Formular eine Variable mit dem angegebenen Namen zu finden. Ist weder Variable noch ein Control mit dem übergebenen Wert vorhanden, so wird ein Fehlereintrag im Log erstellt.
Für das Text-Control mit dem Namen “txt_name” können noch weitere zusätzliche Eigenschaften verwendet werden um auch auf das Layout des Controls Einfluss zu nehmen.
So stehen diese weiteren Eigenschaften zur Verfügung:
Beispiel:
“txt_name.Bold” den Wert “True” übergeben um die Schriftart auf Fett zu setzen.
dic.Add("[@txt_name.Bold]", "True")
/// <summary>
/// Setzt die Schrift-Formierung für Control txt_1 und lbl_1 auf FETT
/// </summary>
/// <returns></returns>
public Dictionary<string,string> TextFormatierungFett()
{
Dictionary<string, string> ret = new Dictionary<string, string>();
ret.Add("txt_1", "Beispieltext");
ret.Add("lbl_1", "Beispieltext");
ret.Add("txt_1.Bold", "True");
ret.Add("lbl_1.Bold", "True");
return ret;
}