Каков наилучший способ отображения текста сразу после TextField? - PullRequest
3 голосов
/ 07 апреля 2011

Я создаю formpanel с элементами, созданными с помощью xtype (не вызываю new для каждого элемента). Я хотел бы добавить точность справа от TextField.

Мне удалось это сделать, установив CompositeField, содержащий TextField + стандартную панель, но есть ли лучший способ, например, свойство в TextField, которое я бы пропустил, или лучшая альтернатива?

Спасибо за вашу помощь! :)

new Ext.form.FormPanel ({
    'id':                   'create-form',
    'header':               true,
    'headerAsText':         true,
    'hideCollapseTool':     true,
    'title':                'New Component',
    'width':                550,
    'style':                'margin: 100px auto',
    'labelWidth':           200,
    'items': [
        {
            'items': [
                {
                    'xtype':            'textfield',
                    'fieldLabel':       'Duration (in hours)',
                    'name':             'name'
                }
            ]
        }
    ]
});

Ответы [ 3 ]

6 голосов
/ 07 апреля 2011

Если вам это нужно только для одного поля, то CompositeField вполне подойдет.Тем не менее, вам действительно нужен совершенно новый Panel для текста - не достаточно ли обычного Label?

Если вам нужно более многократно используемое решение, взгляните на параметр конфигурации fieldTpl FormLayout .Вы можете изменить шаблон и добавить специальный раздел после поля, в котором будет отображаться дополнительная информация.

3 голосов
/ 07 апреля 2011

Мне не известно о собственности, которая будет делать то, что вы хотите с панелью справа.Если это то, что вы делаете более одного раза, подумайте над тем, чтобы сделать для него собственный тип:

Ext.ns('Ext.ux.form');

Ext.ux.form.DurationField = Ext.extend(Ext.form.CompositeField, {
  constructor: function(cfg) {
    cfg = Ext.applyIf(cfg || {}, {
      items: [ /** blah blah */ ]
    });
    Ext.ux.form.DurationField.superclass.constructor.call(this, cfg);
  }
});

Ext.reg('durationfield', Ext.ux.form.DurationField);

Это позволит вам использовать durationfield, как если бы это был гражданин первого класса.

2 голосов
/ 07 апреля 2011

Вы также можете использовать Ext.form.DisplayField (xtype displayfield) внутри составного поля для отображения статического текста.

...