Kombinationsfeld, Optionsfeldgruppe und Listenfeld sind einander ähnlich, weil der Benutzer hier stets eine einzige Option aus einer Gruppe von Optionen auswählen muss.
Wie das Kontrollkästchenwidget müssen auch die Einzelauswahlwidgets an eine Variable gebunden werden, die ihren Status darstellt. Statt einer booleschen Variablen müssen die Einzelauswahlwidgets jedoch an eine Variable des Typs INT gebunden werden, damit der Index der gegenwärtig ausgewählten Option dargestellt wird.
record singleSelectForm type ConsoleForm
{ formsize=[12,40] }
myRadio consoleRadioGroup
{name = "radio", bounds = [1,2,4,17]};
myCombo consoleCombo
{name = "combo", bounds = [7,2,1,15]};
myList ConsoleList
{name ="list", bounds = [9,2,2,18]};
end
radioValue, comboValue, listValue int = 2;
myWindow WINDOW {name="myWindow", position=[1,1]};
openWindow(myWindow);
myForm singleSelectForm{};
myForm.myCombo.items =
["Option One", "Option Two", "Option Three"];
myForm.myRadio.items =
["Option One", "Option Two", "Option Three"];
myForm.myList.items =
["one","two","three","four","five","six"];
displayForm(myForm);
openUI myForm
bind radioValue, comboValue, listValue
//event handlers go here
end
onEvent (ConsoleRadioGroup.SELECTION_CHANGED : "radio")
SysLib.writeStdout("Radio selected: "::radioValue);
onEvent (ConsoleCombo.SELECTION_CHANGED : "combo")
SysLib.writeStdout("Combo selected: "::comboValue);
onEvent(ConsoleList.SELECTION_CHANGED : "list")
SysLib.writeStdout("List selected: "::listValue);
Nachfolgend ist ein umfassendes Beispiel für ein Programm der Konsolenbenutzerschnittstelle dargestellt, das ein Kombinationsfeldwidget und ein Optionsfeldgruppenwidget auf diese Weise verwendet.
package programs;
import forms.singleSelectForm;
program singleSelectTest type BasicProgram {}
radioValue, comboValue, listValue int = 2;
function main()
myWindow WINDOW {name="myWindow", position=[1,1]};
openWindow(myWindow);
myForm singleSelectForm{};
myForm.myCombo.items =
["Option One", "Option Two", "Option Three"];
myForm.myRadio.items =
["Option One", "Option Two", "Option Three"];
myForm.myList.items =
["one","two","three","four","five","six"];
displayForm(myForm);
openUI myForm
bind radioValue, comboValue, listValue
onEvent (ConsoleRadioGroup.SELECTION_CHANGED : "radio")
SysLib.writeStdout("Radio selected: "::radioValue);
onEvent (ConsoleCombo.SELECTION_CHANGED : "combo")
SysLib.writeStdout("Combo selected: "::comboValue);
onEvent(ConsoleList.SELECTION_CHANGED : "list")
SysLib.writeStdout("List selected: "::listValue);
end
end
end
package forms;
record singleSelectForm type ConsoleForm
{ formsize=[12,40] }
myRadio consoleRadioGroup
{name = "radio", bounds = [1,2,4,17]};
myCombo consoleCombo
{name = "combo", bounds = [7,2,1,15]};
myList ConsoleList
{name ="list", bounds = [9,2,2,18]};
end
Wenn Sie das EGL-Programm im Modus für die Rich-Client-Plattform (RCP) ausführen, sieht die Benutzerschnittstelle folgendermaßen aus:


myForm.list1.multipleSelect = TRUE;
Wenn für multipleSelect die Einstellung 'false' (also die Standardeinstellung) festgelegt ist, enthält der Wert der Variablen, die an das Widget gebunden ist, den Index des ausgewählten Eintrags. Wird der erste Eintrag ausgewählt, enthält die Variable die Zahl 1.
Ist der fünfte Eintrag ausgewählt, enthält die
Variable die Zahl 5. Ist für multipleSelect die Einstellung 'true' festgelegt,
enthält die Variable eine binäre Darstellung der ausgewählten Einträge.
Jedem Eintrag in der Liste wird gemäß seiner Position ein Vielfaches von 2 zugeordnet:
Der erste Eintrag erhält die Zahl 1, der zweite die Zahl 2, der dritte die Zahl 4, der vierte die Zahl 8, der fünfte die Zahl 16, der sechste die Zahl 32 usw. Der Wert der Variablen ist die Summe der Werte aller ausgewählten Einträge. Falls beispielsweise nur der erste Eintrag ausgewählt ist, enthält die Variable den Wert 1. Sind der erste und der zweite Eintrag ausgewählt, enthält die Variable den Wert 3, also die Summe der Werte für die beiden ausgewählten Einträge. Sind der zweite, der fünfte und der sechste Eintrag ausgewählt, enthält die Variable den Wert 50 (also 2+16+32).