Макет карты не допускает плавающей панели - PullRequest
1 голос
/ 03 июля 2011

Я начинаю с Sencha Touch и имею небольшую проблему с плавающей панелью.Идея состоит в том, чтобы создать небольшую панель входа в систему, чтобы предоставить доступ к главной панели приложения.Окно просмотра - это панель с макетом карты и двумя панелями в ней, loginPanel и mainPanel.

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

var App = new Ext.Application({
    name: 'tool'
    ,useLoadMask: true
    ,launch: function(){

        tool.views.loginPanel = new Ext.Panel({
            listeners: {
                afterrender: function(){
                //setTimeout('loginForm.show();', 2000);
                tool.views.loginForm.show();
                }
            }
        });

        tool.views.loginForm = new Ext.form.FormPanel({
                        floating: true
                        ,width: 350
                        ,height: 300
                        ,centered: true
                        ,modal: true
                        ,hideOnMaskTap: false
                        ,dockedItems:[{
                            xtype: 'toolbar'
                            ,title: 'Identificación'
                            ,ui: 'light'
                            }],
                        items: [{
                            xtype: 'fieldset'
                            ,id: 'loginFormSet'
                            ,title: ''
                            ,items: [
                                {
                                    xtype: 'emailfield',
                                    placeHolder: 'Usuario',
                                    name: 'Usuario',
                                    id: 'Username',
                                    required: true,
                                }, {
                                    xtype: 'passwordfield',
                                    placeHolder: 'Password',
                                    name: 'Password',
                                    required: true
                                }, {
                                    xtype: 'checkboxfield',
                                    id: 'RememberMe',
                                    name: 'RememberMe',
                                    label: '¿Guardar ID?',
                                    labelWidth: '40%'
                                },{
                                    xtype: 'button',
                                    text: 'Acceder',
                                    ui: 'confirm',
                                    style: 'margin:2%;',
                            handler: function(){
                                mainPanel.setActiveItem(1);
                                loginForm.destroy();
                            }

                                    }]
                            }]
                });

        tool.views.viewport = new Ext.Panel({
            fullscreen: true
            ,cls: 'mi_clase1'
            ,layout: 'card'
            ,cardAnimation: 'slide'
            ,items: [tool.views.loginPanel]

        }) // Fin del PAnel viewPort
    } // Find de funcion ,launch
}) // Fin de la application

Как вы можете видеть, loginForm должен быть вставлен в Panel, а эта Panel - в окне просмотра с макетом карты.Если я вставлю formPanel в область просмотра, он не будет работать.Почему это?Я что-то не так делаю? Или, может быть, это единственный способ получить плавающую панель в макете карты?

Еще один вопрос: setTimeout ('loginForm.show ();', 2000);

Не работает и ничего не отображает.Есть идеи?

Большое спасибо

1 Ответ

0 голосов
/ 05 июля 2011

Часть первая - Как правило, приложение Sencha Touch должно содержать одну полноэкранную панель. Это называется окном просмотра и действует как контейнер для всех других компонентов. Когда вы создаете плавающее окно без области просмотра, оно не имеет системы координат, в которой можно центрироваться.

Часть вторая - Вместо:

setTimeout('loginForm.show();', 2000);

попробуйте это:

setTimeout('tool.views.loginForm.show();', 2000);
...