Mit dem RepeaterControl können wiederkehrende Strukturen und Elemente erzeugt werden. Dabei ist es ausreichend eine Vorlage in Form einer Zeile zu gestalten. Diese Zeile kann in bestimmter Anzahl wiederholt werden, wobei der Formularentwickler eine feste Anzahl vorgeben, aber auch den Ausfüller die Anzahl der Zeilen bestimmen lassen kann.
Mit dem RepeaterControl können bequem einfache Berechnungen erstellt werden. Für das Erstellen der Summe über alle Controls im Repeater wurde eine Funktion im Funktionseditor hinterlegt. Dabei ist zu beachten, dass das AusgabeControl außerhalb des RepeaterControls liegen muss.
Eine einfache Anwendung für das RepeaterControl sind Tabellen. Repeater sind ab Version 5.4 auch für Webformulare verfügbar.
Eigenschaft | Beschreibung |
---|---|
Schaltflächen | |
ShowAdd | Angabe, ob der Button für das Hinzufügen einer Zeile angezeigt werden soll. Die hinzugefügte Zeile erscheint am Ende. Angabe: True (Ja) oder False (Nein) |
ShowRemove | Angabe, ob der Button für das Entfernen einer Zeile angezeigt werden soll. Es wird immer die letzte Zeile entfernt. Angabe: True (Ja) oder False (Nein) |
ShowRowRemove | Angabe, ob der Button für das Entfernen einer Zeile in jeder Zeile angezeigt werden soll. Jede Zeile kann separat entfernt werden. Angabe: True (Ja) oder False (Nein) |
Wiederholung | |
Anzahl | Angabe der sichtbaren Zeilen |
Autosize |
Angabe, ob das Control während des Hinzufügens neuer Zeilen wachsen soll oder ob die Größe des Controls erhalten bleiben soll (mit Scrollbar) Angabe: True (Ja) oder False (Nein) |
Maximum | Angabe der maximalen Anzahl von Zeilen |
Minimum | Angabe der minimalen Anzahl von Zeilen |
StartIndex | Angabe des Namenssuffix für Controls innerhalb des Repeaters. Der Start kann manuell festgelegt werden, der Index wird anschließend inkrementiert. |
Zeilenabstand | Angabe eines festen Zeilenabstandes |
Entwurf | |
AlternateColor | Alternierende Hintergrundfarbe für Repeaterzeile, wenn kein Hintergrundbild verwendet wird |
BackImage | Hintergrundbild für das Element |
prefix | Prefix für die interne Bezeichnung der Controls |
RowBackImage | Hintergrundbild für einzelne Wiederholung |
.
Die Mitarbeiter eines Unternehmens sollen in einem Formular auflisten können, welche Kosten ihnen bei einer Reise entstanden sind.
Dazu wird im FormDesigner ein RepeaterControl (rp_1)
erstellt. In diesem werden eine ComboBox (rp_1cb_1
; im Beispiel befüllt aus einer Globalen Variable) und zwei TextBoxen (rp_1txt_1
und rp_1txt_2
) platziert. Die drei Boxen bilden zusammen eine Tabellenzeile. Die Spaltennamen sind durch Label dargestellt.
Wenn der Anwender das Formular öffnet, sieht er zunächst nur eine Tabellenzeile und kann diese durch eine Auswahl in der ComboBox und durch Eintragungen in die Textboxen befüllen.
Benötigt er weitere Zeilen, fügt er sie über das Pluszeichen hinzu. Zum Entfernen einer Zeile kann er das Minuszeichen verwenden, siehe nebenstehende Abbildung.
Controls, die innerhalb eines RepeaterControls platziert werden, haben also die besondere Eigenschaft, dass sie bei der Eingabe im Formular durch den Anwender bei Bedarf vervielfältigt werden können. Bei nachträglicher Veränderung des Formularentwurfs im FormDesigner ist daher Folgendes zu beachten: Wird ein bestehendes Control in ein RepeaterControl verschoben, erhält es eine neue ID. Zuvor bestehende Zuordnungen, etwa zwischen einem AttachmentControl und den darin bereits in Datensätzen gespeicherten Datei-Anhängen werden aufgehoben. Alle erhobenen Daten bleiben dabei erhalten.
Es kann notwendig sein, dass bestimmte Werte des Repeater-Controls ausgelesen werden müssen.
Dafür gibt es ein paar hilfreiche Funktionen:
Annahme: Es existiert ein Repeater-Control [@rp_Test]
, mit einer TextBox [@txt_Test]
und einer ComboBox [@cb_Test]
.
[@txt_Test]
einer Zeile n?[@rp_Testtxt_Test_n]
[@txt_Test]
der letzten Zeile?Schritt 1: Auslesen, welche Zeile die letzte ist.
Der Variable [$LetzteZeile]
wird der Wert [![@rp_Test]-1:0]
zugewiesen.
Schritt 2: Wert übergeben und gewünschtes Feld auslesen[@rp_Testtxt_Test_[$LetzteZeile]]