CheckBox в ComboBox

Бих искал да има квадратчета за отметка в комбинирано поле, като в този опростен пример:

var rawData = [];
for (var i = 0; i < 20; i++) {
    rawData.push(i);;
}  
var data = new qx.data.Array(rawData);

var list = new qx.ui.form.ComboBox();
list.setWidth(150);

this.getRoot().add(list);

var controller = new qx.data.controller.List(null, list);

var delegate = {
    createItem : function() {
    return new qx.ui.form.CheckBox();
    }
};

controller.setDelegate(delegate);

controller.setModel(data);

Работи, но не мога да „маркирам“ квадратчетата за отметка, защото падащият списък се затваря, когато щракна върху него, така че бих искал да отворя/затворя комбинирания списък само с бутона. Как да го направя? Благодаря предварително.


person Aurélie Le lièvre    schedule 25.09.2014    source източник


Отговори (1)


Някои събития на ComboBox са отговорни за затварянето на изскачащия прозорец (вижте код в GitHub), преди щракването да стигне до подлежащо квадратче за отметка. Ако внедрите свой собствен ComboBox и презапишете метода за затваряне, той работи.

qx.Class.define("foo.ComboBox", {
  extend: qx.ui.form.ComboBox,
  members: {
    close: function() {
    }
  }
})

var rawData = [];
for (var i = 0; i < 20; i++) {
    rawData.push(i);;
}  
var data = new qx.data.Array(rawData);

var list = new foo.ComboBox();
list.setWidth(150);

var controller = new qx.data.controller.List(null, list);
var delegate = {
    createItem : function() {
    return new qx.ui.form.CheckBox();
    }
};
controller.setDelegate(delegate);
controller.setModel(data);

this.getRoot().add(list);

Сега обаче трябва да помислите как ще се справите с множество избори на квадратчета за отметка и кога да затворите изскачащия прозорец.

person Richard Sternagel    schedule 26.09.2014