Jump to content

TUniPageControl отображения вкладок без кнопок прокрутки


OlegTimkiv

Recommended Posts

On 12/3/2023 at 2:11 PM, OlegTimkiv said:

Подскажите пожалуйста, есть какое-нибудь решение, для отображения вкладок - которые не помещаются, новой строкой? 

Мне кажется, что нет такой возможности на данный момент. Хотя, возможно есть решения обходными путями.

Link to comment
Share on other sites

On 12/3/2023 at 2:11 PM, OlegTimkiv said:

Подскажите пожалуйста, есть какое-нибудь решение, для отображения вкладок - которые не помещаются, новой строкой? 

 

1 hour ago, Sherzod said:

"Простое" использование UniPageControl...

 

1. UniPageControl1.ClientEvents.UniEvents ->

function beforeInit(sender, config) 
{
    config.segmentedTabs =
        Ext.create('Ext.button.Segmented', {
            layout: 'column',
            allowMultiple: false,
            id: config.id + '_segmented_tabs',
            items: [],
            listeners: {
                toggle: function(container, button, pressed) {
                    if (pressed) {
                        button._item.getEl().dom.click()
                    }
                }
            }
        });

    config.dockedItems = [{
        xtype: 'toolbar',
        dock: 'top',
        layout: 'column',
        items: [
            config.segmentedTabs
        ]
    }];
}

2. UniPageControl1.ClientEvents.ExtEvents ->

function beforerender(sender, eOpts)
{
    sender.tabPanel.tabBar.getRefItems().forEach(function(item){
        sender.segmentedTabs.add({
           text: item.text,
           _item: item,
           id: item.id + '_segment'
        });
    });
    Ext.util.CSS.updateRule('.x-segmented-button-item-horizontal.x-segmented-button-middle', 'border-left', '');
    Ext.util.CSS.updateRule('.x-segmented-button-item-horizontal.x-segmented-button-last', 'border-left', '');
    
    sender.tabPanel.on('tabchange', function(tabPanel, newCard, oldCard, eOpts) {
        Ext.getCmp(newCard.getId() + "_tab_segment").setPressed(true)}
    );
}

3. UniPageControl1.ClientEvents.ExtEvents ->

function afterrender(sender, eOpts)
{
    sender.tabPanel.tabBar.setHeight(sender.segmentedTabs.getHeight());
}

 

Link to comment
Share on other sites

On 12/3/2023 at 3:11 PM, OlegTimkiv said:

Добрый день!

Подскажите пожалуйста, есть какое-нибудь решение, для отображения вкладок - которые не помещаются, новой строкой? 

TUniPageControl.jpg

Олег, ты что там изобретаешь?))

Link to comment
Share on other sites

  • 1 month later...

Нет, т.к. меня именно для TUniTabControl требуется решение.

Спасибо, если поможете найти решение.

Рад  Вас сльішать!

  • Like 1
Link to comment
Share on other sites

On 1/31/2024 at 12:10 PM, x11 said:

TUniTabControl требуется решение

Добрый день,

image.png.38b6c8c998da5d32ab8961d77ef3d959.png

Попробуйте это решение:

1. UniTabControl.ClientEvents.UniEvents ->

function beforeInit(sender, config)
{
    config.segmentedTabs =
        Ext.create('Ext.button.Segmented', {
            layout: 'column',
            allowMultiple: false,
            id: config.id + '_segmented_tabs',
            items: [],
            listeners: {
                toggle: function(container, button, pressed) {
                    if (pressed) {
                        Ext.defer(function(){
                            sender.tabPanel.setActiveTab(sender.segmentedTabs.value)
                        }, 10);
                    }
                }
            }
        });
}

2. UniTabControl.ClientEvents.ExtEvents ->

function afterrender(sender, eOpts)
{
    sender.add({
        xtype: 'toolbar',
        dock: 'top',
        layout: {
            type: 'column'
        },
        items: [
            sender.segmentedTabs
        ]
    });
}

3. UniTabControl.ClientEvents.ExtEvents -> Ext.tab.Panel [tabPanel]

function tabPanel.tabchange(tabPanel, newCard, oldCard, eOpts)
{
    var tabControl = this.up('panel');
    var refItems = this.tabBar.getRefItems();
    
    if (tabControl.segmentedTabs.getRefItems().length == 0) {
        refItems.forEach(function(item){
          tabControl.segmentedTabs.add({
              text: item.text,
              _item: item,
              id: item.id + '_segment'
          })
        });            
      Ext.getCmp(this.tabBar.activeTab.getId() + "_segment").setPressed(true);
    } else {
        Ext.getCmp(this.tabBar.activeTab.getId() + "_segment").setPressed(true);
    }
}

 

Link to comment
Share on other sites

Спасибо. Почти работает.

Проблема в том, что если внутрь положить обьект, например, dbGrid, то сетка перекрьівает второй (нижний) ряд кнопок.

2024-02-02 08_47_26-free version _ Квартал ПРО WEB — Mozilla Firefox.png

Link to comment
Share on other sites

3 hours ago, x11 said:

Проблема в том, что если внутрь положить обьект, например, dbGrid, то сетка перекрьівает второй (нижний) ряд кнопок.

Попробуйте:

function afterrender(sender, eOpts)
{
    sender.add({
        xtype: 'toolbar',
        dock: 'top',
        layout: {
            type: 'column'
        },
        items: [
            sender.segmentedTabs
        ],
        listeners: {
            resize: function() {
                var _sHeight = sender.segmentedTabs.getHeight();
                var _dHeight = _sHeight - sender.tabPanel.tabBar.getHeight();
                var _innerPanel = sender.innerPanel;
                _innerPanel.setBodyStyle('top', _dHeight + 'px');
                _innerPanel.setBodyStyle('height', (_innerPanel.getHeight() - _dHeight) + 'px');
            }
        }
    });
}

 

  • Upvote 1
Link to comment
Share on other sites

 

On 2/2/2024 at 12:35 PM, Sherzod said:

Попробуйте:

В общем, оказалось, что работает частично.

1. Нижний ряд вкладок закрьівает сетка uniDBGrid - видно на картинке 1. Попробуйте изменть ширину окна браузера, вот тогда проблема уходит.

2. Нижняя часть сетки uniDBGrid вьілазит - видно на картинке 2. Попробуйте изменить вьісоту

окна браузера, вот тогда проблема уходит.

 

Я прикрепил тестовьій проект.

image.png

image.png

uniGUI_uniTabControl.rar

Link to comment
Share on other sites

13 hours ago, x11 said:

В общем, оказалось, что работает частично.

1. Нижний ряд вкладок закрьівает сетка uniDBGrid - видно на картинке 1. Попробуйте изменть ширину окна браузера, вот тогда проблема уходит.

2. Нижняя часть сетки uniDBGrid вьілазит - видно на картинке 2. Попробуйте изменить вьісоту

окна браузера, вот тогда проблема уходит.

Ok, попробуйте также это решение, оно должно сработать:

function afterrender(sender, eOpts)
{
    sender.add({
        xtype: 'toolbar',
        dock: 'top',
        layout: {
            type: 'column'
        },
        items: [
            sender.segmentedTabs
        ],
        listeners: {
            resize: function() {
                var _sHeight = sender.segmentedTabs.getHeight();
                //var _dHeight = _sHeight - sender.tabPanel.tabBar.getHeight();
                var _dHeight = _sHeight + sender.tabPanel.tabBar.getHeight();
                var _innerPanel = sender.innerPanel;
                //_innerPanel.setBodyStyle('top', _dHeight + 'px');
                //_innerPanel.setBodyStyle('height', (_innerPanel.getHeight() - _dHeight) + 'px');
                _innerPanel.setY(_dHeight + 10);
                sender.updateLayout();
            }
        }
    });
}

 

Link to comment
Share on other sites

4 hours ago, Sherzod said:

попробуйте также это решение, оно должно сработать

На простом примере работает.

К сожалению, я не думал, что все так сложно. У меня приложение на базе UniPageControl. Я добавил в тестовьій пример и опять не работает (см. картинку).

Надо бьіло мне сразу добавить UniPageControl.

Посмотрите, пожалуйста еще раз, что можно исправить. Спасибо.

2024-02-05 12_30_15-New Application — Mozilla Firefox.png

uniGUI_uniTabControl1.rar

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...