XdevComboBox

Anfang  Zurück  Vor

Letzte Änderung 16.01.2014

 

Die XdevComboBox ist eine Formular-Komponente, mit der sich ein einzelner Wert aus einer Liste auswählen lässt. Die XdevComboBox setzt sich aus einem TextField, einem Button und einer ListBox zusammen, die erst durch Anklicken des Buttons eingeblendet wird. Die Liste der XdevComboBox entspricht der Formular-Komponente XdevListBox, sodass die XdevComboBox alle Eigenschaften und Funktionen der XdevListBox besitzt. Die XdevComboBox kann jedoch weitaus platzsparender eingesetzt werden und kann darüber hinaus auch editierbar sein und erlaubt dazu die direkte Eingabe eines Wertes über die Tastatur. Die Listen-Einträge einer XdevComboBox lassen sich über die Eigenschaft Einträge mit Hilfe eines Assistenten statisch festlegen oder zur Laufzeit dynamisch zugewiesen.

 

Um den ausgewählten Wert einer XdevComboBox abzuspeichern, muss die Komponente über die Eigenschaft Datenfeld mit der Spalte einer Virtuellen Tabelle verknüpft werden, in der die ID des ausgewählten Wertes abgespeichert wird. Die Spalte muss ein Fremdschlüssel sein.

 

 

clip0237

 

 

 

Aufbau der Listen-Einträge

 

Beim Füllen der ComboBox wird immer die itemList gefüllt. Die itemList ist das Daten-Model für die ComboBox. Sie besitzt eine Spalte für die in der ComboBox sichtbaren Einträge sowie eine zusätzliche Spalte, die jedoch unsichtbar bleibt. I.d.R. werden darin die Datensatz-IDs der ComboBox-Einträge gespeichert. Diese werden benötigt, um einen ausgewählten ComboBox-Eintrag abspeichern zu können.

 

Darüber hinaus besitzt die itemList einen Index der mit 0 beginnt und immer lückenlos geführt wird. Über den Index ist ein direkter Zugriff auf itemList-Einträge möglich.

 

Hersteller-VT

clip0239

Die Daten der Virtuelle Tabelle ...

 

ComboBox ItemList

clip0238

... werden in die itemList der ComboBox geschrieben ...

 

ComboBox Eigenschaften

clip0240

... die Verknüpfung der Spalten erfolgt in den Eigenschaften der ComboBox.

 

 

 

ComboBox automatisiert füllen

 

Um eine ComboBox zu füllen, müssen Sie lediglich eine Virtuelle Tabelle auf die ComboBox ziehen.

 

1.Fügen Sie eine ComboBox in die Arbeitsfläche ein.

2.Ziehen Sie die Virtuelle Tabelle Hersteller per Drag&Drop auf die ComboBox.

 

In den Eigenschaften der ComboBox wird automatisch die Virtuelle Tabelle zugewiesen sowie die Spalten für die interne itemList mit den sichtbaren Einträgen für die ComboBox und deren jeweilige Datensatz-ID.

 

clip0099

 

 

 

Mehrspaltige ComboBox

 

clip0287

 

Die Einträge einer ComboBox können sich auch aus mehreren Werten zusammen. Dazu müssen Sie in den Eigenschaften bei Anzeige (Sichtbarer Eintrag) die jeweiligen VT-Spalten mit Hilfe von Textvariablen angeben, z.B. {$MODELL} {$HERSTELLER}. Über eine Liste lassen sich die Spalten benötigten Spalten auswählen, wodurch die entsprechende Textvariable automatisch generiert wird. Zwischen den Werten lassen sich beliebige Zeichen angeben, z.B. Semikolon, Komma, aber auch mehreren Wörtern, z.B. {$NAME} wohnhaft in {$ORT}.

 

clip0286

 

 

 

ComboBox manuell füllen

 

Eine ComboBox wird i.d.R. bei der Initialisierung gefüllt. Das Füllen erfolgt mit Hilfe der Methode setModel( ). Vorausgehend muss eine Datenbankabfrage erfolgen, z.B. auf die Tabelle Hersteller.

 

@EventHandlerDelegate void comboBox_init() 

{

  // Abfrage der Tabelle 'Hersteller'

  comboBox.setModel(Hersteller.VT,"MARKE","ID");      

}

 

 

 

Wichtigste Methoden

 

setModel

 

Überträgt alle Daten der Virtuellen Tabelle in die Combobox. Mit String ItemCol legen Sie fest, aus welcher Spalte die Listen-Einträge ausgelesen werden und mit String dataCol geben Sie an, in welcher Spalte die IDs der Listen-Einträge stehen.

 

Wichtigste Überladungen:

setModel(VirtualTable vt, String itemCol, String dataCol)

vt - Die Virtuelle Tabelle, welche als Model für diese XdevComboBox genutzt werden soll.

itemCol - Die Spalte, die zur Darstellung der Inhalte des Datensatzes genutzt wird und den sichtbaren Eintrag für die ComboBox enthält.

dataCol - Die Datenspalte, welche zur Identifizierung des Datensatzes benötigt wird, normalerweise die Primärschlüsselspalte.

// Hier wird die Virtuelle Tabelle "Modelle" als Model für die ComboBox festgelegt,
// die Spalte "MODELL" wird als sichtbarer Eintrag definiert und "ID" als Datenspalte
comboBox.setModel(Modelle.VT,"MODELL","ID");

 

setModel(VirtualTable vt, String itemCol, String dataCol, boolean queryData)

vt - Die Virtuelle Tabelle, welche als Model für diese XdevComboBox genutzt werden soll.

itemCol - Die Spalte, die zur Darstellung der Inhalte des Datensatzes genutzt wird und den sichtbaren Eintrag für die ComboBox enthält.

dataCol - Die Datenspalte, welche zur Identifizierung des Datensatzes benötigt wird, normalerweise die Primärschlüsselspalte.

queryData - Legt fest, ob die Daten aus der Datenbank geladen werden sollen.

// Hier wird die Virtuelle Tabelle "Modelle" als Model für die ComboBox festgelegt,
// die Spalte "MODELL" wird als sichtbarer Eintrag definiert und "ID" als Datenspalte.
// Zudem werden die Daten aus der Datenbank geladen
comboBox.setModel(Modelle.VT,"MODELL","ID", true);

 

 

setItemList(ItemList itemList)

 

Legt die ItemList fest, welche die Einträge der ComboBox enthält und löscht danach die vorherige Auswahl.

Weitere Informationen zu ItemLists finden Sie in der JavaDoc.

itemList - Die ItemList mit den Einträgen, mit denen die ComboBox gefüllt werden soll.

//Legt "list" als ItemList für die ComboBox fest
comboBox.setItemList(new ItemList());

 

 

getSelectedIndex() : int

 

Gibt den Index des aktuell ausgewählten Datensatzes zurück

Rückgabewert: Der Index des aktuell ausgewählten Datensatzes als int. Ist kein Eintrag ausgewählt, so wird -1 zurückgegeben.

 

//Gibt den index des ausgewählten Eintrags zurück
int index = comboBox.getSelectedIndex();

 

getSelectedData() : Object

 

Gibt die Werte des ausgewählten Datensatzes zurück.

Rückgabewert: Der Wert des ausgewählten Datensatzes als Object. Ist kein Eintrag ausgewählt, so wird null zurückgegeben.

 

//Gibt Wert des ausgewählten Eintrags zurück
Object data = comboBox.getSelectedData();

 

getSelectedVirtualTableRow() : VirtualTableRow

 

Gibt die Zeile der Virtuellen Tabelle zurück, welche dem ausgewählten Eintrag entspricht.

Rückgabewert: Die aktuell ausgewählte Zeile der Virtuellen Tabelle als VirtualTableRow-Objekt. Ist kein Eintrag ausgewählt, so wird null zurückgegeben.

 

//Gibt die ausgewählte VirtualTableRow der Komponente zurück
VirtualTableRow row  = comboBox.getSelectedVirtualTableRow();

 

getItemCount() : int

 

Gibt die Anzahl der Einträge zurück.

Rückgabewert: Die Anzahl der Einträge in der ComboBox / ItemList als int.

 

//Gibt die Anzahl der Einträge auf der Konsole aus
System.out.println(comboBox.getItemCount());

 

Weitere Informationen zu ItemLists, wie z.B. das Hinzufügen oder löschen von Einträgen finden Sie in der JavaDoc.