ExtJs 4 - изменение размера элементов формы при изменении размера окна

Я использую ExtJs 4.0.7, и у меня только что возникла проблема. Я хочу изменить размер элементов в форме (панели), когда я изменяю размер окна, которое содержит его (или их). Это просто, когда у вас нет столбцов и вы используете макет anchor, я знаю. Пока мой код выглядит так:

initComponent: function ()
    {
        var me = this;

        me.terminalImage = Ext.create('Ext.Img', {
            src: 'http://www.sencha.com/img/20110215-feat-html5.png',
            width: 50,
            margin: '0 10 0 0'
        });

        me.nameField = Ext.create('Ext.form.Text', {
            xtype: 'textfield',
            name: 'defname',
            fieldLabel: 'myFLabel',
            allowBlank: false,
            listeners: {

            }
        });
        me.terminalTypeCmb = Ext.create('Ext.form.field.ComboBox', {
            fieldLabel: me.getTrans('lblTerminalType.Text', 'Type'),
            parentRecord: me.parentRecord,
            store: 'myStore',
            queryMode: 'local',
            name: 'typename',
            width: 300,
            valueField: 'deftype',
            displayField: 'typename',
            listeners: {

            }
        });

        me.form = Ext.create('Ext.form.Panel', {
            xtype: 'form',
            autoScroll: true,
            defaultType: 'textfield',
            defaults: { layout: 'anchor', flex: 1},
            padding: '10',
            items: [{
                xtype: 'container',
                layout: 'hbox',
                items: [
                    me.terminalImage,
                    {
                        items: [me.nameField, me.terminalTypeCmb]
                    }
                ]
            }
            ]
        });

        Ext.apply(this,
        {
            defaults: {
        },
        defaultType: 'textfield',
        items: [me.form]
       });

        if (me.parentRecord)
        {
            me.form.loadRecord(me.parentRecord);
        }
        this.callParent(arguments);
    }

Я хотел получить что-то вроде этого:

 My Image      |   My TextField (resizable width on window resize)
 (fixed size)  |   My ComboBox (I know it is not resizable)
               | 

Прямо сейчас мое текстовое поле остается с постоянной шириной при изменении размера окна. Спасибо за помощь.


person darkdante    schedule 21.02.2013    source источник


Ответы (1)


Вы почти там :)

просто удалите flex по умолчанию :defaults: { layout: 'anchor', flex: 1}, // не уверен, нужен ли вам макет.

и добавьте flex:1 только в TextField.
Если другие элементы будут зафиксированы с помощью, TextField займет все оставшееся место.

person d.raev    schedule 29.03.2013