Index: QxComboBox.js
===================================================================
--- QxComboBox.js	(revision 2724)
+++ QxComboBox.js	(working copy)
@@ -184,11 +184,67 @@
 };
 
 
+/*!
+ * Gets the index of the selected item (0-indexed); returns -1 if nothing is selected.
+ */
+proto.getSelectedIndex = function ()
+{
+    if (this._manager.getSelectedItem() == null)
+    {
+        return -1;
+    }
 
+    var items = this._manager.getItems();
+    var i;
+    var selitem = this._manager.getSelectedItem();
+    for (i = 0; i < items.length; i++)
+    {
+        if (items[i] == selitem)
+        {
+            return i;
+        }
+    }
+    return -1;
+};
 
 
+/*!
+ * Sets the selected item by index (0-indexed).
+ * Pass "-1" to deselect all items; if
+ * index is larger than the number of items minus 1, the
+ * last item will be selected.
+ */
+proto.setSelectedIndex = function (idx)
+{
+    if (idx < 0)
+    {
+        this._manager.setSelectedItem (null);
+        return;
+    }
 
+    var items = this._manager.getItems();
+    if (items.length == 0)
+    {
+        this._manager.setSelectedItem (null);
+        return;
+    }
 
+    var selitem = null;
+    if (idx > items.length - 1)
+    {
+        idx = items.length - 1;
+    }
+
+    selitem = items[idx];
+
+    this._manager.setSelectedItem (selitem);
+    this.setValue(selitem.getLabel());
+};
+
+
+
+
+
 /*
 ---------------------------------------------------------------------------
   MODIFIER
Index: QxListView.js
===================================================================
--- QxListView.js	(revision 2724)
+++ QxListView.js	(working copy)
@@ -235,6 +235,65 @@
   };
 };
 
+
+/*!
+ * Gets the index of the selected item (0-indexed); returns -1 if nothing is selected.
+ */
+proto.getSelectedIndex = function ()
+{
+    var mgr = this._pane.getManager();
+    if (mgr.getSelectedItem() == null)
+    {
+        return -1;
+    }
+
+    var items = mgr.getItems();
+    var i;
+    var selitem = mgr.getSelectedItem();
+    for (i = 0; i < items.length; i++)
+    {
+        if (items[i] == selitem)
+        {
+            return i;
+        }
+    }
+    return -1;
+};
+
+
+/*!
+ * Sets the selected item by index (0-indexed).
+ * Pass "-1" to deselect all items; if
+ * index is larger than the number of items minus 1, the
+ * last item will be selected.
+ */
+proto.setSelectedIndex = function(idx)
+{
+    var mgr = this._pane.getManager();
+    if (idx < 0)
+    {
+        mgr.setSelectedItem (null);
+        return;
+    }
+
+    var items = mgr.getItems();
+    if (items.length == 0)
+    {
+        mgr.setSelectedItem (null);
+        return;
+    }
+
+    var selitem = null;
+    if (idx > items.length - 1)
+    {
+        idx = items.length - 1;
+    }
+
+    selitem = items[idx];
+    mgr.setSelectedItem (selitem);
+};
+
+
 proto._getHeaderCell = function(vCellId)
 {
   var vNewEntry = this._columns[vCellId];
Index: QxTree.js
===================================================================
--- QxTree.js	(revision 2724)
+++ QxTree.js	(working copy)
@@ -199,13 +199,64 @@
   return 0;
 };
 
+/*!
+ * Gets the index of the selected item (0-indexed); returns -1 if nothing is selected.
+ */
+proto.getSelectedIndex = function ()
+{
+    if (this._manager.getSelectedItem() == null)
+    {
+        return -1;
+    }
 
+    var items = this._manager.getItems();
+    var i;
+    var selitem = this._manager.getSelectedItem();
+    for (i = 0; i < items.length; i++)
+    {
+        if (items[i] == selitem)
+        {
+            return i;
+        }
+    }
+    return -1;
+};
 
 
+/*!
+ * Sets the selected item by index (0-indexed).
+ * Pass "-1" to deselect all items; if
+ * index is larger than the number of items minus 1, the
+ * last item will be selected.
+ */
+proto.setSelectedIndex = function (idx)
+{
+    if (idx < 0)
+    {
+        this._manager.setSelectedItem (null);
+        return;
+    }
 
+    var items = this._manager.getItems();
+    if (items.length == 0)
+    {
+        this._manager.setSelectedItem (null);
+        return;
+    }
 
+    var selitem = null;
+    if (idx > items.length - 1)
+    {
+        idx = items.length - 1;
+    }
 
+    selitem = items[idx];
+    this._manager.setSelectedItem (selitem);
+};
 
+
+
+
 /*
 ---------------------------------------------------------------------------
   COMMON CHECKERS
