infra:NET Expert
 
×
[FillControl]
In infra:NET können Auswahllisten (Combo-Boxen) und ein- oder mehrspaltige Listen (Listbox, ScrolledTabList, MultiColumnScrolledList) und bedingt auch Eingabefelder und Labels aus INI-/ASCII-Dateien, infra-Datenbankdateien, Globalvariablen oder über infra-Makroausdrücke gefüllt werden.
Aus Globalvariablen können nur einspaltige Listen gefüllt werden, keine mehrspaltigen.
Dadurch wird zum Beispiel die Pflege von Wertelisten für Auswahllisten erheblich vereinfacht und ohne GRIT-Editor möglich.
Weitere Anwendungsmöglichkeiten entstehen durch die dynamische situationsabhängige Anzeige von Listen mit zusätzlichen Angaben aus der Datenbank oder beim Einsatz des INFRAADO-Plugins aus beliebigen SQL-Datenquellen.
Wenn also zum Beispiel im Teilestamm die Felder «Teileart», «Teilegruppe» oder «Suchbegriff» mit Werten einer Auswahlliste aus einer leicht pflegbaren ASCII-Datei versorgt werden sollen, dann muss dazu lediglich das jeweilige Feld einmal in eine Auswahlliste (Combo-Box) umgewandelt (GRIT-Editor) und ein Eintrag in der Datei SIBPPS.INI mit dem Verweis auf die ASCII-Datei erfasst werden.
Danach kann mit einem einfachen Dateieditor die ASCII-Datei mit den vorgeschriebenen Eintragungen und den Werten für die Auswahl erfasst werden.
Die Werte der Auswahlliste können auch in einer infra-Datenbankdatei gespeichert und von dort ausgelesen werden. Dazu ist standardmäßig die Datei IND-CODE.DAT (Datei 123) vorgesehen. Es können aber auch andere Dateien dazu benutzt werden.
Um Daten in eine Listbox bzw. mehrspaltige Liste zu schreiben, muss prinzipiell genauso vorgegangen werden - in einem Dialog muss ein entsprechendes List-Objekt vorhanden sein (oder eingebaut werden), dessen Ident (GritID) in der Sektion [FillControl] einzutragen und mit entsprechenden Parametern zu versehen ist.
In der Sektion [FillControl] werden die Idents der Controls (Fensterelemente) hinterlegt, die aus der Datenbank oder einer ASCII-Datei mit Werten gefüllt werden sollen. Folgende Arten von Controls sind zulässig:
  • Auswahllisten (ComboBox)
  • Listen (ScrolledList)
  • Listen mit Spalten (ScrolledTabList bzw. MultiColumnScrolledList)
  • Eingabefelder und Labels (nur bei Füllen über infra-Makros)
Bei der Umwandlung von Eingabefeldern in Auswahllisten (ComboBox) mit dem GRIT-Editor ist darauf zu achten, dass eventuell vorhandene SibDef-Einträge für Eingabefelder (Sektion [GuiEdit] nicht mehr ausgewertet werden. Für Auswahllisten gilt zum Beispiel die SibDef-Sektion [GuiCombo]. Ist in einer SibDef-Sektion [GuiEdit] beispielsweise der Schlüssel "Locked" enthalten, muss dieser nach der Umwandlung in die SibDef-Sektion [GuiCombo] eingetragen werden.
Bei nicht editierbaren Auswahllisten werden grundsätzlich nur Werte zugelassen, die auch in der Auswahlliste aufgeführt werden. Eine editierbare Auswahlliste erlaubt auch die Eingabe von Werten, die nicht in der Liste enthalten sind. In diesem Fall muss direkt der gewünschte Pufferwert (kein Beschreibungstext) eingegeben werden.
Mehrspaltige Listen sollten nicht durch "Locked=Yes" in der SibDef-Sektion [GuiScroll] gesperrt werden, da sonst keine Veränderung der Spaltenbreite oder Sortierungen der Liste mehr möglich ist. Um eine Liste für reine Informationszwecke zu benutzen, sollte statt dessen mit "IgnoreSelection" (siehe unten) gearbeitet werden.
Steht in einem der Auswahllisten zu Grunde liegenden Feld ein Wert, der nicht in der für die Auswahlliste verwendeten Datenbasis für die Zuordnung von Anzeigetexten enthalten ist, nimmt die Auswahlliste (oder mehrspaltige Liste) dessen nicht vorhandenen Wert automatisch auf und bringt ihn - natürlich ohne erläuternden Text - zur Anzeige. Die Datenbasis, aus der die Auswahlliste gefüllt wurde, wird dabei nicht ergänzt.
Leersätze müssen in der Datenbanktabelle, aus der zum Beispiel eine Auswahlliste gefüllt wird, nicht erfasst werden, da ein Leereintrag in der Auswahlliste bzw. Liste automatisch zur Verfügung gestellt wird, es sei denn, dies wird durch "IgnoreMissingElements" oder "HideEmptyEntry" (siehe unten) verhindert.
Die Sortierung des Inhalts von Auswahllisten erfolgt automatisch aufsteigend. Das gilt auch, wenn die Auswahlliste automatisch, wie zuvor beschrieben, ergänzt wird. Bei mehrspaltigen Listen werden die Elemente zunächst in der Reihenfolge angezeigt, wie sie in die Liste aufgenommen wurden. Die Sortierung lässt sich aber durch Klicken auf die Spaltenüberschriften spaltenweise in auf- oder absteigender Richtung ändern. Mit "ReserveReading" lässt sich die Reihenfolge, in der die Elemente aus der Datenbanktabelle gelesen werden, umkehren (siehe unten).
Füllen aus ASCII-Datei
Die Syntax der Einträge zum Füllen von Controls aus einer ASCII-Datei ist wie folgt:
Id=datei,schlüssel
Dieser Eintrag bewirkt, dass das Control mit der ID id (z.B. eine Auswahlliste) über die Datei datei mit Werten gefüllt wird. Dabei werden nur Werte berücksichtigt, deren Schlüsselfeld dem Wert schlüssel entspricht. Die ASCII-Datei (im ASCII-Zeichenformat) hat dabei folgenden Aufbau:
schlüssel;anzeigetext;pufferwert[;anzeigetext2;anzeigetext3;...]
schlüssel;anzeigetext;pufferwert[;anzeigetext2;anzeigetext3;...]
schlüssel;anzeigetext;pufferwert[;anzeigetext2;anzeigetext3;...]
Jede Zeile der ASCII-Datei entspricht einem Eintrag in der Auswahlliste oder in der mehrspaltigen Listbox. Die Angabe schlüssel dient zur Gruppierung von Werten. Dadurch wird es möglich, mehrere Auswahllisten oder Controls aus einer einzigen ASCII-Datei zu füllen. Der anzeigetext wird in der Auswahlliste eingetragen und kann vom Benutzer ausgewählt werden. Bei mehrspaltigen Listen entspricht dies dem Inhalt der ersten Spalte. Der pufferwert ist der Wert, der bei Auswahl des entsprechenden Eintrags aus der Auswahlliste oder Liste in den dem Control zugeordneten Datenpuffer eingetragen wird. Der pufferwert wird zusätzlich in Klammern hinter dem anzeigetext in der Auswahlliste angezeigt. Beim Füllen von mehrspaltigen Listen können hinter dem pufferwert noch die anzuzeigenden Texte der 2. und folgenden Spalten angegeben werden.
Beispiel:
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
PDV111_1_11=C:\filler.txt,TEILEGRUPPE
Die Datei C:\FILLER.TXT enthält folgende Zeilen:
TEILEART;Art 1;1
TEILEART;Art 2;2
TEILEART;Art x;X
TEILEGRUPPE;Metall;MT
TEILEGRUPPE;Holz;HZ
TEILEGRUPPE;Blech;BL
In der Auswahlliste mit dem Ident "PDV111_1_11" würden nun folgende Einträge zur Auswahl angeboten:
Metall (MT)
Holz (HZ)
Blech (BL)
Bei Auswahl des 2. Eintrags der Auswahlliste würde der Wert MT in den der Auswahlliste zugeordneten Datenpuffer eingetragen werden.
Der oben beschriebene pufferwert kann auch entfallen. Werden also in der ASCII-Datei nur schlüssel und anzeigetext angegeben, so wird bei Auswahl eines Eintrags aus der Auswahlliste der angezeigte Text direkt in den zugeordneten Datenpuffer geschrieben (zum Beispiel bei Suchbegriffen).
Beispiel
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
PDV111_1_7=C:\klassen.txt,KLASSE
Die Datei C:\KLASSEN.TXT enthält folgende Zeilen:
KLASSE;SCHRAUBE M10
KLASSE;SCHRAUBE M12
KLASSE;SCHRAUBE M14
Im obigen Beispiel ergibt sich in der Auswahlliste folgende Anzeige:
SCHRAUBE M10
SCHRAUBE M12
SCHRAUBE M14
Bei Auswahl des 3. Eintrags der Auswahlliste würde der Wert SCHRAUBE M14 in den der Auswahlliste zugeordneten Datenpuffer eingetragen werden.
Füllen aus INI-Datei
Die Syntax der Einträge zum Füllen von Controls aus einer INI-Datei (SIBPPS.INI) ist wie folgt:
Id=sektion,schlüsselteil,parameter-nummer[,parameter-nummer2,...]
Dieser Eintrag bewirkt, dass das Control mit der ID id (zum Beispiel eine Auswahlliste) über die Sektion [sektion] mit Werten gefüllt wird. Dabei werden nur Einträge berücksichtigt, deren Schlüssel mit schlüsselteil beginnt. Die parameter-nummer gibt an, welcher Parameter der gefundenen Einträge in der angegebenen Sektion den Anzeigetext für die auszuwählenden Elemente der Auswahlliste (Combo-Box) enthält. Bei mehrspaltigen Listen können weitere parameter-nummern für jede weitere Spalte angegeben werden. Der Wert, der bei Auswahl eines der eingetragenen Elemente in den der Auswahlliste zugeordneten Datenpuffer geschrieben wird, entspricht dem Teil des Schlüssels der INI-Einträge, der nicht fixiert und als schlüsselteil in der Sektion [FillControl] angegeben wurde.
Beispiel:
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
PDV111_1_11=Teilegruppen,TGRUPPE-,2
Aus der Sektion [Teilegruppen] sollen die Einträge mit dem Schlüssel TGRUPPE-... benutzt und der jeweils 2. Parameter der Einträge als Anzeigetext in der Auswahlliste angezeigt werden. Der 1. Parameter wird dabei nicht ausgewertet und ist somit ohne Bedeutung.
Die Sektion [Teilegruppen] enthält folgende Einträge:
[Teilegruppen]
TART-1=abc,Art 1
TART-2=def,Art 2
TART-3=ghi,Art x
TGRUPPE-MT=jkl, Metall
TGRUPPE-HZ=mno,Holz
TGRUPPE-BL=pqrs,Blech
In der Auswahlliste mit dem Ident "PDV111_1_11" würden nun folgende Einträge zur Auswahl angeboten:
Metall (MT)
Holz (HZ)
Blech (BL)
Bei Auswahl des 2. Eintrags der Auswahlliste würde der Wert HZ in den der Auswahlliste zugeordneten Datenpuffer eingetragen werden.
Füllen aus infra-Datenbank
Hinweis: Bei Verwendung der primären SQL-Datenbank (SQLpur) sollte unbedingt mit SQLShowResults (Füllen per infra-Makros) gearbeitet werden.
Für die Standard-Listen wird dafür eine entsprechende Konfigurationsdaten FillControlSQL.INI ausgeliefert, die per [INCLUDE] in die Standard-Konfiguration eingebunden werden kann (siehe auskommentierten Eintrag in SIBPPS.INI).
Tipp:
Diese Vorgehensweise empfiehlt sich auf bei aktivierter Online-Replikation, sofern alle betroffenen Tabellen repliziert werden.
Für das Füllen von Auswahllisten aus einer infra-Datenbankdatei ist standardmäßig die Datei IND-CODE.DAT vorgesehen. Andere Dateien, zum Beispiel Textdateien, sind auch zulässig. Beim Füllen von mehrspaltigen Listen können beliebige Datenbankdateien benutzt werden. Die Syntax der Einträge zum Füllen von Controls aus einer Tabelle der infra-Datenbank ist wie folgt:
Id=datei,index,schlüssel,schlüsselPIS,anzeigetextPIS,anzeigetextLEN,pufferwertPIS,
pufferwertLEN[,(format1,format2,...)]
oder bei mehreren Schlüsselfeldern
Id=datei,index,(schlüsselw,schüssel2,...),(schlüsselPIS1,schlüsselPIS2,...),anzeigetextPIS,
anzeigetextLEN,pufferwertPIS,pufferwertLEN[,(format1,format2,...)]
oder bei mehrspaltigen Listen
Id=datei,index,schlüssel,schlüsselPIS,(anzeigetextPIS1,anzeigetextPIS2,..),(anzeigetextLEN1,
anzeigetextLEN2,...),pufferwertPIS,pufferwertLEN[,(format1,format2,...)]
oder bei mehreren Schlüsselfeldern und mehrspaltigen Listen
Id=datei,index,(schlüssel1,schlüssel2,...),(schlüsselPIS1,schlüsselPIS2,...),(anzeigetextPIS1,
anzeigetexPIS2,..),(anzeigetextLEN1,anzeigetextLEN2,...),pufferwertPIS,pufferwertLEN
[,(format1,format2,...)]
Die Parameter haben folgende Bedeutung, wobei Positions-, Längen- und Formatangaben über Makros wie DDp(), DDl() und DDf() möglich sind:
Id
ID des Controls (zum Beispiel Auswahlbox), das mit den Daten aus der Datenbank gefüllt werden soll.
datei
Nummer der infra-Tabelle (Datenbankdatei), aus der die Werte für das Control gelesen werden sollen (zum Beispiel 123 für Individuelle Codes)
index
Nummer des Zugriffspfads, über den die Datensätze mit den Werten für das Control gelesen werden sollen. Die zur Verfügung stehenden Zugriffspfade finden Sie im Datenbankstatus.
schlüssel
Zeichenfolge, die als Schlüsselinformation für den Zugriff auf die Datensätze mit den Werten für das Control verwendet werden soll.
Sind für den Zugriff auf die gewünschte Datenbankdatei mehrere Schlüsselfelder notwendig, muss dieser Parameter in runde Klammern gefasst und die einzelnen Schlüsselwerte durch Kommata getrennt werden.
Die Schlüsselwerte können auch aus infra-Makros (siehe Kapitel infra-Makros) bestehen.
[!]schlüsselPIS
Position des Schlüssels im Datensatz der Datei, aus der die Werte für das Control gelesen werden soll. An diese Position wird die Zeichenfolge schlüssel für den Zugriff auf die Datenbank in den Datensatz eingetragen. Die Position eines Schlüsselfelds finden Sie im Datenbankstatus.
Sind für den Zugriff auf die gewünschte Datenbankdatei mehrere Schlüsselfelder notwendig, muss dieser Parameter in runde Klammern gefasst und die einzelnen Schlüsselwertpositionen durch Kommata getrennt werden. Ein Ausrufungszeichen vor einer Positionsangabe (zum Beispiel !252) verhindert, dass beim Lesen der Datensätze das Füllen einer Liste abgebrochen wird, wenn der zu dieser Position gehörigen Schlüsselwert durch den gefundenen Datensatz die Schlüsselvorgabe verletzt. Der jeweilige Datensatz wird zwar ignoriert, es wird aber versucht, weitere Sätze zu finden. So lassen sich auch Datensätze finden, deren Selektionskriterium nicht Bestandteil des verwendeten Zugriffspfad sind.
anzeigetextPIS
Position des Anzeigetextes innerhalb der Datensätze aus der verwendeten Datei. Dieser Text wird im Control (zum Beispiel einer Auswahlliste) eingetragen. Die Position des Textfelds finden Sie im Datenbankstatus.
Beim Füllen mehrspaltiger Listen kann dieser Parameter in runde Klammern gefasst und je Spalte eine Datensatzposition, aus der der Text gelesen werden soll, durch Kommata getrennt angegeben werden.
anzeigetextLEN
Länge des Anzeigetextes in Zeichen. In dieser Länge wird der in das Control einzutragende Text aus den Datensätzen der verwendeten Datei ausgelesen. Die Länge des Textfelds im Datensatz finden Sie im Datenbankstatus.
Beim Füllen mehrspaltiger Listen kann dieser Parameter in runde Klammern gefasst und je auszugebender Spalte eine Textlänge durch Kommata getrennt ausgegeben werden.
pufferwertPIS
Position des zu verwendenden Pufferwerts innerhalb der Datensätze aus der verwendeten Datei. Der Pufferwert wird in den dem jeweiligen Control (zum Beispiel der Auswahlliste oder Listbox) zugeordneten Datenpuffer eingetragen, wenn der entsprechende Texteintrag selektiert wurde. Zusätzlich wird der Pufferwert in Klammern hinter dem Anzeigetext einer Auswahlliste angezeigt. (siehe auch unter "Füllen aus ASCII-Datei"). Wenn in den zugeordneten Datenpuffer kein spezieller Wert, sondern direkt der Anzeigetext eingetragen werden soll, können bei Auswahllisten pufferwertPIS und pufferwertLEN weggelassen werden.
pufferwertLEN
Länge des Pufferwerts in Zeichen. In dieser Länge wird der Pufferwert aus den Datensätzen der verwendeten Datei ausgelesen (siehe pufferwertPIS). Die Position und die Länge des zu verwendenden Pufferwerts finden Sie im Datenbankstatus.
format
Alternativ kann beim Füllen mehrspaltiger Listen für jede Spalte ein eigenes Ausgabeformat (zum Beispiel d für 8stelliges Datum) angegeben werden. Dazu muss dieser Parameter in runde Klammern gefasst und die Spaltenformate durch Kommata getrennt angegeben werden. Wird ein Format nicht angegeben, wird die jeweilige Spalte so angezeigt, wie sie im Datenpuffer enthalten ist.
In der zu füllenden Liste bzw. Auswahlliste wird automatisch ein Leereintrag aufgenommen, um auch leere Pufferinhalte ohne zusätzlichen Aufwand erzeugen zu können. Weiterhin wird automatisch ein Pufferwert neu in der Liste aufgenommen (nur am Bildschirm), wenn ein entsprechender Datensatz beim Füllen der Liste nicht gefunden wurde. Dadurch wird verhindert, dass versehentlich Datensätze verändert werden, wenn zu einem Wert im Bezugspuffer kein Datensatz in der Liste vorhanden ist. Diese Automatismen können durch das Schlüsselwort "IgnoreMissingElements" (siehe unten) in der Sektion [FillControl] verhindert werden.
Beispiel 1:
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
PDV111_1_11=114,1,TEILEGRUPPE,2,40,20,37,2
Dieser Eintrag liest für die Auswahlliste des Felds «Teilegruppe» (Feld 11) alle Texte aus der Datei 114 (Einkaufstexte), deren Ident mit TEILEGRUPPE beginnt. Ab Position 37 (Beginn des Textfelds) werden in der Länge 2 die Pufferwerte ausgelesen. Ab Position 40 (im Textbeispiel nach dem Gleichheitszeichen) wird in der Länge 20 der Text für die Anzeige in der Auswahlliste gelesen.
Textbeispiel:
Key:
TEILEGRUPPE-EL
Text:
EL=Elektroteile
Key:
TEILEGRUPPE-NO
Text:
NO=Normteile
In der Auswahlliste wird angezeigt:
Elektroteile (EL)
Normteile (NO)
Die Werte EL bzw. NO werden in das Feld «Teilegruppe» eingetragen, wenn eine dieser Zeilen in der Auswahlliste ausgewählt wird.
Beispiel 2:
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
PDV111_9_FA=40,4,"LBUF(6,DDp(6,3),DDI(6,3))",124(1,252,72,44,108),
(7,8,15,7,7),124,15,(,d,,,)
Dieser Eintrag setzt das Vorhandensein einer mehrspaltigen Liste mit Pufferbezug ([GuiBuffer]) und den Spaltenbezeichnungen "Fertigungsauftrag", "Endtermin", "Projekt", "Kunde" und "Kundenauftrag" voraus. Der Schlüssel für den Zugriff auf die Datei Fertigungsauftragskopf (40) über Pfad 4 (Teilenummer) wird aus Programmpuffer 6 über das infra-Makro LBUF(...) geholt. Die Textpositionen und -längen der 5 Spalten werden in Klammern angegeben. Die zweite Spalte soll mit dem Datumsformat für 8stellige Datumsfelder formatiert werden.
Hinweis
Unbedingt mit Makro LBUF() arbeiten und nicht das Makro DBFIELD() benutzen, da sonst Leerzeichen am Ende abgeschnitten werden und formatabhängige Anpassungen vorgenommen werden! Damit diese Liste nur zu Informationszwecken genutzt werden kann (also keine Pufferveränderung durch Selektion bestimmter Listenzeile), sollte der Eintrag "IgnoreSelection" für dieses Control in der Sektion [FillControl] aktiviert werden (siehe unten). Weiterhin kann mit dem Eintrag "RefreshContents" (siehe unten) für dieses Control erreicht werden, dass der Inhalt der Liste jedes Mal neu zusammengestellt wird, sobald sich der Inhalt des diesem Control im CGW zugeordneten Puffers ändert (also hier beim Wechsel des Teils).
Füllen aus Globalvariable
Die Syntax der Einträge zum Füllen von Controls aus einer Globalvariable ist wie folgt:
Id=Globalvariablenname
Dieser Eintrag bewirkt, dass das Control mit der ID id (zum Beispiel eine Auswahlliste) mit dem Inhalt der Globalvariable "Globalvariablenname" gefüllt wird. Der Inhalt der Globalvariable muss dabei folgenden Aufbau haben:
Anzeigetext1 (pufferwert1)\nAnzeigetext2 (pufferwert2) \n..
Jeder durch "\n" getrennte Wert entspricht einem Eintrag in der Auswahlliste. Der anzeigetext wird in der Auswahlliste eingetragen und kann vom Benutzer ausgewählt werden. Der pufferwert ist der Wert, der bei Auswahl des entsprechenden Eintrags aus der Auswahlliste in den der Auswahlliste zugeordneten Datenpuffer eingetragen wird. Der pufferwert wird zusätzlich in Klammern hinter dem anzeigetext in der Auswahlliste angezeigt.
Beispiel:
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
AUF411_3_62=GV_medialist
Die Globalvariable "GV_medialist" ist eine vom System bereitgestellte Variable. Sie enthält alle in infra:NET verfügbaren Druck-/Ausgabemedien in folgender Form:
Bildschirm (MED00000)\nHP LaserJet 5MB (MED00001)\n   \n
Man beachte den zusätzlichen Leereintrag am Ende der Medienliste. Damit wird neben den verfügbaren Druckmedien auch ein leerer Eintrag in der Combo-Box angeboten. In der Auswahlliste mit dem Ident "AUF411_3_62" würden nun folgende Einträge zur Auswahl angeboten:
Bildschirm (MED00000)
HP Laserjet 5MP (MED00001)
Die Einträge werden alphabetisch aufsteigend sortiert angeboten. Bei Auswahl des 2. Eintrags der Auswahlliste würde der Wert MED00001 in den der Auswahlliste zugeordneten Datenpuffer eingetragen werden.
Füllen per infra-Makros
Zum Füllen eines Controls über infra-Makros wird einfach der auszuführende Makroausdruck dem jeweiligen Control zugeordnet:
Id=Makroausdruck
Dieser Eintrag bewirkt, dass das Control mit der ID id (zum Beispiel eine Listbox) durch den angegebenen Makroausdruck gefüllt wird. Dabei muss der Makroausdruck entsprechende Makros beinhalten, die selbstständig Informationen in einem Control anzeigen können (wie beispielsweise WriteDlgField oder SQLShowResults). Anders als bei den anderen FillControl-Arten genügt es also nicht anzugeben, mit welchen Daten gefüllt werden soll, sondern die Makros selbst müssen die Daten auch darstellen können.
Beispiel:
In der Datei SIBPPS.INI ist folgendes eingetragen:
[FillControl]
AUF411_9_OPFIBU=SQLShowResults(,AUF411_9_OPFIBU,DIAMANT435,OffenePosten)
AUF411_9_OPFIBU.RefreshContents=Yes
AUF411_9_OPFIBU.IgnoreSelection=Yes
AUF411_9_OPFIBU.IgnoreMissingElements=Yes
Das Control "AUF411_9_OPFIBU" ist eine Listbox in der Kundenstammdatenverwaltung. Die Listbox wird über das Makro "SQLShowResults" mit Einträgen versorgt. Da dieses Makro selbstständig Daten in einer Listbox visualisieren kann, muss dem Makro die ID der zu verwendenden Listbox explizit mitgegeben werden (hier noch einmal "AUF411_9_OPFIBU").
Da ein Makroausdruck mehrere Makros (hintereinander oder geschachtelt) beinhalten kann, ist es über diese Technik auch möglich, mehrere Controls gleichzeitig mit Daten zu füllen. Das als Schlüssel in der Sektion [FillControl] angegebene Control dient dann lediglich als Auslöser für das Befüllen mehrerer Listboxen oder auch Eingabefelder. Diese Technik erlaubt ein einfaches situationsabhängiges Anzeigen von Zusatzdaten ohne umständliches Anzapfen von Ereignissen und Erstellen von IMA-Dateien. [FillControl] reagiert durch die Steuerangabe "RefreshContents" (siehe unten) bereits auf die fundamentalen Ereignisse, die zur Aktualisierung der Anzeige benötigt werden.
Beispiel:
Um in zwei Eingabefelder über Makros Daten anzeigen zu lassen, könnte folgender Eintrag verwendet werden:
[FillControl]
AUF435_2_A1=WriteDlgField(AUF435_2,AUF435_1_SKPROZ1,ScreenFormat(DBSelect(41,1,50,DBFIELD(KKOPF,Knd)),C12))WriteDlgField(AUF435_2,AUF435_1_TEST,Hallo!)
AUF435_2_A1.RefreshContents=Yes
Im Feld "AUF435_1_SKPROZ1" des Kundenauftragsbearbeitungsdialogs wird daraufhin der 1.Skontosatz des Kunden angezeigt, in einem Feld "AUF435_1_TEST" der Text "Hallo!". 
Zusätzliche Angaben
Mit weiteren Einträgen in der Sektion [FillControl] kann das Füllen eines Controls gesteuert werden. Dazu wird immer die ID des betroffenen Controls gefolgt von einem Punkt und einem der hier aufgeführten Schlüsselworte angegeben.
ID.MaxEntries=Anzahl
Über diesen Eintrag kann die Anzahl der in das Control aufzunehmenden Einträge beschränkt werden. Weitere Datensätze werden dann ignoriert. Das kann sinnvoll werden, wenn eine nicht absehbare Datenmenge aus einer Datenbankdatei zum Füllen einer Liste benutzt werden soll.
ID.IgnoreMissingElements=Yes/No
Über diesen Eintrag kann gesteuert werden, ob automatisch ein Leerelement und eventuell gefundene fehlende Pufferwerte dynamisch in die Liste (Auswahlliste) aufgenommen werden sollen. Bei Yes wird der Automatismus deaktiviert. Vorsicht! Die Deaktivierung kann bei Auswahllisten, die für eine Eingabe verwendet werden sollen, zu Datenverlusten führen, wenn die Auswahlliste aus irgendeinem Grund nicht alle möglichen Puffer enthält.
Default ist No (also der Automatismus ist aktiv).
ID.IgnoreSelection=Yes, (Default : No)
Über diesen Eintrag kann gesteuert werden, ob die Selektion eines Eintrags in diesem Control zu einer Veränderung des zu diesem Control gehörigen Puffers führen soll oder nicht.
Da eine mehrspaltige Liste durch eine normale Eingabesperre mittels "Locked=Yes" in der [GuiScroll]-Sektion im SibDef der CGW-Datei komplett unbedienbar wird (keine Spaltenverschiebung mehr möglich, keine Umsortierung mehr möglich) bietet sich also die Möglichkeit, eine Liste zu reinen Anzeigezwecken zu nutzen.
Bei Yes werden Selektionen (Mausklicks auf eine Spalte) ignoriert.
Default ist No (also Selektionen werden ausgewertet).
ID.RefreshContents=Yes/No
Dieser Eintrag ermöglicht die dynamische Anpassung des Inhalts einer Liste bei einer Änderung des zu diesem Control gehörigen Pufferinhalts, das heißt bei dem betreffenden Listcontrol muss im SibDef ein entsprechender GuiBuffer-Eintrag hinterlegt sein. Jede Änderung des zum Control gehörigen Puffers führt dann zu einem kompletten Neuaufbau der Liste. In Standard-Programmen führt ein Satzwechsel (Blättern zum nächsten Stammsatz) immer zu einer Aktualisierung aller Puffer, so dass auch automatisch alle Listcontrols, die über FillControll dynamisch gefüllt werden, bei einem Satzwechsel aktualisiert werden.
Bei Yes wird der Inhalt des Controls dynamisch aktualisiert.
Default ist No (also keine Aktualisierung des Inhalts).
ID.HideEmptyEntry=Yes/No
Über diesen Eintrag kann das Einfügen eines Leerelements ("leerer Eintrag") beim Füllen aus der Datenbank unterbunden werden, auch wenn die automatische Ergänzung fehlender Elemente durch "IgnoreMissingElements" nicht deaktiviert wurde.
Bei Yes wird kein Leerelement eingefügt.
Bei No wird ein Leerelement eingefügt, es sei denn, dies wird durch "IgnoreMissingElements=Yes" unterbunden.
Default ist No. Zum Beispiel wird in der Auswahlliste «Sprache» in "411 Kundenstamm bearbeiten" sowohl "leerer Eintrag" als auch "Deutsch(   )" angeboten, falls dies nicht mit der Angabe "AUF411_1_36.HideEmptyEntry=Yes" unterbunden wird.
ID.ReverseReading=Yes/No
Über diesen Eintrag kann die Reihenfolge des Lesens aus der Datenbank umgekehrt werden, das heißt entsprechend des verwendeten Zugriffspfads wird vom Tabellenende zum Tabellenanfang gelesen. Das ist dann sinnvoll, wenn in einer FillControl-Liste zum Beispiel die letzten (aktuellsten) Aufträge o. Ä. zuerst angezeigt bzw. zur Auswahl angeboten werden sollen.
Bei Yes wird in absteigender Reihenfolge gelesen.
Bei No wird in aufsteigender Reihenfolge gelesen.
Default ist No.
ID.ExtSelections=Vergleichsausdruck1, Vergleichsausdruck2, ...
Mit "ExtSections" können beim Füllen aus einer Datenbanktabelle zusätzliche Filter (Selektionen) definiert werden, die nicht Bestandteil des verwendeten Zugriffspfads sein müssen. Datensätze, die nicht den angegebenen Filterwerten entsprechen, werden beim Füllen ignoriert, zum Beispiel können bei der Anzeige von Beständen die Bestände mit 0 ausselektiert werden oder bei der Ausgabe von Auftragspositionen können erledigte Positionen ausselektiert werden.
Ein Vergleichsausdruck besteht aus zwei Vergleichswerten, die durch einen Operator getrennt werden. Durch Komma getrennt, können beliebig viele Vergleichsausdrücke hintereinander formuliert werden. Das Komma wirkt dabei wie ein Und. Ein Vergleichsausdruck kann beliebige Makros beinhalten. Mit dem Makro LBUF kann auf den Satzbuffer zugegriffen werden. Der Index des Puffers muss dabei IMMER  mit der Datei übereinstimmen, mit der die Auswahlliste bzw. die Listbox befüllt wird. Als Vergleichsoperatoren sind ==, !=, >, <, >= und <= zulässig.
Ohne eingrenzende Anführungszeichen um einen Vergleichswert wird immer numerisch verglichen, sonst alphanumerisch.
Hinweis
Bei alphanumerischen Vergleichen unbedingt auf beiden Seiten Anführungszeichen benutzen. Zum Beispiel liefert LBUF(40,DDp(40,2),1)==" " keineswegs alle Sätze mit dem Leerzeichen als Status, da das Makro LBUF ein Leerzeichen liefert und Leerzeichen vor dem Gleichheitszeichen werden nicht beachtet.
Beispiele
Nur Lagerplatzbestände > 0 anzeigen
SDA211_2_LPZ.ExtSelections=LBUF(85,DDp(85,7),DDl(85,7))>0
Nur nicht erledigte Fertigungsauftraege seit 2004 anzeigen
PDV111_FA.ExtSelections="LBUF(40,DDp(40,7),DDl(40,7))">="20040101","LBUF(40,DDp(40,2),1))"!="E"
Beispiel
[FillControl]
PDV111_9_FA=40,4,"LBUF(6,DDp(6,3),DDI(6,3))",124,(1,252,72,44,108),
            (7,8,15,7,7),124,15,(,d,,,)
PDV111_9_FA.RefreshContents=Yes
PDV111_9_FA.IgnoreMissingElements=Yes
PDV111_9_FA.IgnoreSelection=Yes
ID.KeyFieldsMin = “Wert1“,“Wert2“,…
Diese Einstellung gilt nur beim Füllen aus der infra-Datenbank.
Es kann für jedes Schlüsselfeld des verwendeten Zugriffspfades durch Komma getrennt ein Mindestwert angegeben werden. Bei fehlender Angabe oder „“ gelten Leerzeichen als Minimum für das jeweilige Schlüsselfeld. Die Mindestwerte gelten als Einschränkung der durch die Definition von „Schlüssel“ (s.o.) möglichen (Koppel-)Werte z.B. aus anderen Datensätzen (Puffern) oder Eingabefeldern. Anders als „ExtSelections“ wirkt die Einschränkung direkt auf den Datenbankzugriff, d.h. es wird versucht direkt auf Datensätze zuzugreifen, die das hier angegebene Minimum je Schlüsselfeld nicht unterschreiten, was letztlich zu einem performanteren Füllen der Liste führen kann.
Siehe auch ID.KeyFieldsMax in dieser Sektion.
Beispiel:
Im Standard wird der Eintrag für das Programm "531 Fertigungsaufträge bearbeiten" genutzt, da ansonsten bei noch nicht freigegebenen Auftragspositionen im Register Zusatz zum Befüllen der Listbox für Alternativteile alle Auftragspositionen mit Referenznummer 0 gelesen würden und das sind alle nicht freigegebenen Positionen aus allen Aufträgen.
Mit den Einstellungen
FST531_140_TW.KEYFIELDSMIN=“M“,“        1“;  Achtung Referenznummer muss formatgerecht angegeben werden, also für Format N8 mit 8 Leerzeichen und der 1
FST531_140_TW.KEYFIELDSMAX=“M“;
werden nur Sätze mit Referenznummer (RefNr, Feld 173) >= 1 gelesen. Es wird mit Referenznummer „1“ aufgesetzt, wenn das Koppelkriterium (Datei 53, Feld 37) < 1 ist, was beim Prüfen des Koppelkriteriums (Datei 53, Feld 37) bei „0“ zu einer Schlüsselverletzung und damit zum Abbruch führt.
ID.KeyFieldsMax = “Wert1“,“Wert2“,…
Diese Einstellung gilt nur beim Füllen aus der infra-Datenbank und entspricht der Einstellung ID.KeyFieldsMin in dieser Sektion, aber für Maximalwerte je Schlüsselfeld.