Флажок в ComboBox

Я хотел бы иметь чекбоксы внутри 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