XdevNMListBox

Anfang  Zurück  Vor

Letzte Änderung 14.02.2014

 

Die XdevNMListBox löst n:m Beziehungen automatisch auf, stellt die jeweiligen Daten automatisch als Checkbox-Liste dar und ermöglicht das An- und Abwählen entsprechender Werte, z.B. Fahrzeug-Extras wie Klima, Leder, Servo, ABS etc. Datenquelle ist eine n:m Tabelle, die über die Eigenschaft Virtuelle Tabelle mit der XdevNMListBox verknüpft werden muss. Da die n:m Tabelle lediglich die Fremdschlüssel der beteiligten Tabellen enthält, i.d.R. IDs, muss die (virtuelle) n:m Tabelle um eine Spalte erweitert werden, in der die zur Ausgabe in einer Liste geeigneten Daten automatisch hinzugejoint werden. Die Erweiterung der Virtuellen Tabelle lässt sich im Tabellen-Editor durchführen.

 

Beim Speichern der XdevNMListBox-Auswahl werden die entsprechenden Fremdschlüssel-Kombinationen automatisch in der verknüpften n:m Tabelle abgespeichert. Da hierbei intern mehrere Datensätze gespeichert werden müssen, erfolgt die Speicherung immer als Transaktion. Die Komponente stellt dafür entsprechende Methoden zur Verfügung.

 

Ist die XdevNMListBox Bestandteil eines Formulars, wird auch die XdevNMListBox-Auswahl von der Formular-Methode save( ) mit abgespeichert. Auch hierbei erfolgt die Speicherung automatisch als Transaktion.

 

 

clip0206

 

 

 

XdevNMListBox

 

1.Lassen Sie sich ein Formular von der Virtuellen Tabelle Fahrzeuge generieren. Ziehen Sie dazu die Virtuelle Tabelle Fahrzeuge per Drag&Drop in die Arbeitsfläche und übernehmen Sie die Einstellungen im folgenden Formular-Assistenten.

2.Fügen Sie ganz unten im Formular ein weiteres Label per Drag&Drop ein, benennen Sie dieses EXTRAS und fügen Sie daneben eine XdevNMListBox ein. Mit Hilfe der Toolbox können Sie die Elemente im Layout entsprechend ausrichten.

clip0202

3.Erweitern Sie nun die Virtuelle Tabelle FahrzeugeExtras, indem Sie sich ein Datenfeld für die Ausgabe der Extras generieren lassen, welche dann durch die Erweiterung der Virtuellen Tabelle automatisch hinzu gejoint werden. Dies ist notwendig, weil in FahrzeugeExtras nur die Datenfelder FAHRZEUGE_ID und EXTRAS_ID und somit in dieser Tabelle nur IDs vorhanden sind, die sich jedoch nicht für die Ausgabe in der XdevNMListBox eignen. Klicken Sie dazu die Virtuelle Tabelle FahrzeugeExtras im Projektmanagement mit Doppelklick an, um den Tabellen-Editor zu öffnen. Klicken Sie in der oberen Symbolleiste auf clip0101. Da nur das generierte Datenfeld EXTRAS_EXTRAS für das Anzeigen der Extras in der XdevNMListBox benötigt wird, können Sie das automatisch dazu erzeugte Datenfeld FAHRZEUGE_ID2 wieder entfernen. Setzen Sie dann bei den Datenfeldern EXTRAS_ID und FAHRZEUG_ID jeweils die Option Primärschlüssel und klicken Sie abschließend auf Speichern.

clip0201

 

4.Wechseln Sie zurück in den GUI-Builder und ziehen Sie die Virtuelle Tabelle FahrzeugeExtras aus dem Projektmanagement auf die XdevNMListBox. Wählen Sie dann in den Eigenschaften bei Anzeige (Sichtbarer Eintrag) das Datenfeld EXTRAS_EXTRAS aus, um die Extras in der XdevNMListBox anzuzeigen und wählen Sie bei Wert (Hinterlegte Daten) das Datenfeld EXTRAS_ID aus.

clip0291

 

 

Hinweis: Die Erweiterung der Virtuellen Tabelle FAHRZEUGE_EXTRAS mit dem Datenfeld EXTRAS_EXTRAS dient lediglich dazu, für den Endanwender lesbare Einträge anstatt IDs in der XdevNMListBox anzeigen zu können. Die entsprechende Datenbanktabelle FAHRZEUGE_EXTRAS bleibt dagegen unverändert.

 

 

 

Darstellungsmöglichkeiten

 

Die XdevNMListBox bietet unterschiedliche Möglichkeiten zum Aufbau der Checkbox-Liste. Die entsprechenden Einstellungen können Sie über die Eigenschaften Layout-Ausrichtung und Sichtbare Zeilen vornehmen.

 

Sichtbare Zeilen: Legt die Anzahl der Zeilen in einer XdevNMListBox fest. Falls mehr Einträge als Zeilen vorhanden sind, wird entsprechend weiterer Einstellungen ein Scroller angezeigt oder es werden weitere Spalten angelegt.

Vertikal: Alle Optionsfelder werden in Form einer Liste von oben nach unten dargestellt.

 clip0205

Horizontal mit Umbruch: Die Optionsfelder werden in der Reihenfolge links nach rechts und von oben nach aufgebaut.

 clip0207

Vertikal mit Umbruch: Die Optionsfelder werden in der Reihenfolge oben nach unten und von links nach rechts aufgebaut.

 clip0206

 

 

 

Wichtigste Methoden

 

setModel

 

Überträgt alle Daten der Virtuellen Tabelle in die XdevNMListBox. 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 XdevNMListBox genutzt werden soll.

itemCol - Die Spalte, die zur Darstellung der Inhalte des Datensatzes genutzt wird und den sichtbaren Eintrag für die XdevNMListBox 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 XdevNMListBox festgelegt,
// die Spalte "MODELL" wird als sichtbarer Eintrag definiert und "ID" als Datenspalte
nmlistBox.setModel(Modelle.VT,"MODELL","ID");

 

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

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

itemCol - Die Spalte, die zur Darstellung der Inhalte des Datensatzes genutzt wird und den sichtbaren Eintrag für die ListBox 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 XdevNMListBox festgelegt,
// die Spalte "MODELL" wird als sichtbarer Eintrag definiert und "ID" als Datenspalte.
// Zudem werden die Daten aus der Datenbank geladen
nmlistBox.setModel(Modelle.VT,"MODELL","ID", true);

 

 

setItemList(ItemList itemList)

 

Legt die ItemList fest, welche die Einträge der XdevNMListBox 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 XdevNMListBox gefüllt werden soll.

//Legt "list" als ItemList für die XdevNMListBox fest
nmlistBox.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 = nmlistBox.getSelectedIndex();

 

getSelectedIndices : int[]

 

Gibt die Indizes der aktuell ausgewählten Datensätze zurück.

Rückgabewert: Die Indizes der aktuell ausgewählten Datensätze in aufsteigender Reihenfolge als int-Array. Ist kein Eintrag ausgewählt, so wird ein leeres Array zurückgegeben.

 

//Gibt den index des ausgewählten Eintrags zurück
int[] indices = nmlistBox.getSelectedIndices();

 

 

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 = nmlistBox.getSelectedData();

 

getSelectedDataAsList() : XdevList<Object>

 

Gibt die Werte der ausgewählten Datensätze zurück.

Rückgabewert: Die Werte der ausgewählten Datensätze als XdevList<Object>. Ist kein Eintrag ausgewählt, so wird eine leere Liste zurückgegeben.

 

//Gibt die Werte der ausgewählten Einträge zurück
XdevList<Object> data = nmlistBox.getSelectedDataAsList();

 

 

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 = nmlistBox.getSelectedVirtualTableRow();

 

getSelectedVirtualTableRows() : VirtualTableRow[]

 

Gibt die Zeilen der Virtuellen Tabelle zurück, welche den ausgewählten Einträgen entspricht.

Rückgabewert: Die aktuell ausgewählten Zeilen der Virtuellen Tabelle als VirtualTableRow-Array. Ist kein Eintrag ausgewählt, so wird ein leeres Array zurückgegeben.

 

//Gibt die ausgewählten VirtualTableRows der Komponente zurück
VirtualTableRow[] rows = nmlistBox.getSelectedVirtualTableRows();

 

 

 

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