Jump to content

Размер кнопки на вкладке PageControl


x11

Recommended Posts

Пытаюсь с помощью CSS увеличить размер кнопки (.x-tab-default .x-tab-close-btn), т.к. кнопка очень маленькая и мышкой на нее трудно попадать.

Но вместо увеличения размера, появляется 4 кнопки.

Подскажите, как правильно увеличить размер кнопки?

Спасибо.

Screenshot_11.jpg

Link to comment
Share on other sites

7 hours ago, x11 said:

Пытаюсь с помощью CSS увеличить размер кнопки (.x-tab-default .x-tab-close-btn), т.к. кнопка очень маленькая и мышкой на нее трудно попадать.

Но вместо увеличения размера, появляется 4 кнопки.

Подскажите, как правильно увеличить размер кнопки?

Здравствуйте.

1. UniTabSheet2 -> ClientEvents -> ExtEvents ->

function afterrender(sender, eOpts)
{
    if (sender.closable) {
        let el = Ext.get(sender.tab.getEl().select('.x-tab-close-btn').elements[0]);
        if (el) {
            el.setStyle('background', null); 
            el.setStyle('background-size', '20px 20px');
            el.setStyle('right', '0'); 
            el.setStyle('top', '0');
            el.setStyle('width', '20px');
            el.setStyle('height', '20px');
            el.setStyle('background-image', 'files/close.png')
        }
    }
}

2. close.png.025219d16e029d64493dc1776dd8ff66.png(files/close.png)

3. Результат:

image.png.671ab2165fb782385e11218141ec6318.png

Link to comment
Share on other sites

6 hours ago, x11 said:

Не помогает.

Проблема в том, что вкладки создаются динамически, в run-time.

    with TUniTabSheet.Create(Self) do
    begin
      Caption:='Page-1';
      PageControl:=TUniPageControl(C);
      Closable := True;
      Name := 'Page1'; //<-----
      ClientEvents.ExtEvents.Values['afterrender'] :=
        'function afterrender(sender, eOpts)'+
        '{                                  '+
        '    if (sender.closable) {         '+
        '        let el = Ext.get(sender.tab.getEl().select(".x-tab-close-btn").elements[0]);'+
        '        if (el) {                  '+
        '            el.setStyle("background", null);'+
        '            el.setStyle("background-size", "20px 20px");'+
        '            el.setStyle("right", "0");'+
        '            el.setStyle("top", "0");  '+
        '            el.setStyle("width", "20px");'+
        '            el.setStyle("height", "20px");'+
        '            el.setStyle("background-image", "files/close.png")'+
        '        }'+
        '    }'+
        '}'
    end;

 

Link to comment
Share on other sites

это я уже исправил

нужно было имя назначать после строки:

pgMain.ActivePage := Result;
Result.Name := 'Page' + Result.TabIndex.ToString;

 

Link to comment
Share on other sites

17 hours ago, Sherzod said:

Также попробуйте это правило CSS, no-repeat

 

добавил строку, но результат плохой

        '            el.setStyle("background-repeat", "no-repeat");'+

 

Screenshot_3.jpg

Link to comment
Share on other sites

Спасибо помогло.

Кстати, иконка отрисовывается не та, что указана в коде,

el.setStyle("background-image", "files/close.png")

а по умолчанию, маленькая, стандартная, поэтому она "расплывается" :(

Screenshot_5.jpg

Link to comment
Share on other sites

9 hours ago, x11 said:

Кстати, иконка отрисовывается не та, что указана в коде,

Да.

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

1. CustomCSS:

.customSheet .x-tab-close-btn {
  background-image: url("files/close.png");
  background-size: 24px auto;
  background-repeat: no-repeat;
  background-position: 3px -5px !important;
  width: 24px;
  height: 24px;
}

2. 

function TMainForm.CreateTabSheet(Node: TUniTreeNode): TUniTabSheet;
const
  constBeforeClose                = 'beforeclose';
  funcBeforeClose                 = 'function (panel, eOpts){panel.uniFMask={beforeclose: false};}';

begin
  Result := TUniTabSheet.Create(Self);

  Result.PageControl      := pgMain;
  Result.AlignmentControl := uniAlignmentClient;
  Result.Layout           := 'fit';

  Result.JSInterface.JSAddListener(constBeforeClose, funcBeforeClose);
  Result.Caption     := Node.Text;
//  Result.ImageIndex  := 0;
  Result.Closable    := True;
  Result.Data := Node;

  Result.OnClose     := TabSheetClose;
  Node.Data  := Result;
  Result.Data        := Node;

  if Result.Closable then
    Result.JSInterface.JSAddListener('afterlayout', 'function(){this.tab.addCls("customSheet")}'); //<-------
//  Result.ClientEvents.ExtEvents.Values['afterrender'] :=
//        'function afterrender(sender, eOpts)'+
//        '{                                  '+
//        '    if (sender.closable) {         '+
//        '        let el = Ext.get(sender.tab.getEl().select(".x-tab-close-btn").elements[0]);'+
//        '        if (el) {                  '+
//        '            el.setStyle("background", null);'+
//        '            el.setStyle("background-size", "20px 20px");'+
//        '            el.setStyle("right", "0");'+
//        '            el.setStyle("top", "0");  '+
//        '            el.setStyle("width", "20px");'+
//        '            el.setStyle("height", "20px");'+
//        '            el.setStyle("background-image", "files/close.png")'+
//        '        }'+
//        '    }'+
//        '}';

  CreateFrame(Result, TFrame4);
  pgMain.ActivePage := Result;
  Result.Name := 'page' + Result.TabIndex.ToString;
end;

 

  • Like 1
Link to comment
Share on other sites

Получилось. Спасибо большое.

Единственное, что правильно подставить путь к картинке нужно с ведущим символом наклонной черты:

background-image: url("/files/close.png");

иначе путь будет вот таким, как на второй картинке:

Screenshot_16.jpg

Screenshot_15.jpg

  • Like 1
Link to comment
Share on other sites

  • 3 months later...
On 7/26/2021 at 11:02 PM, Sherzod said:

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

оказалось, что подходит не для всех тем, вот на теме uni_sencha2 выглядит некрасиво

Screenshot_3.jpg

Link to comment
Share on other sites

Ну так может есть другой способ? Универсальный, более правильный?

Может быть, опять же, с помощью CSS можно эту кнопку чуть-чуть растянуть? А не накладывать на нее другую.

Screenshot_7.jpg

Link to comment
Share on other sites

Я так понял, что прикол в том, что в разных темах кнопка - по-разному отображается. В одних - это картинка, в других - это иконка шрифта.

Link to comment
Share on other sites

/*увеличить кнопку Закрыть на вкладках главной формы fmMain.pgMain для тем по умолчанию*/
/*
.customSheet .x-tab-close-btn {
  background-image: url("/files/close.png");
  background-size: 24px auto;
  background-repeat: no-repeat;
  background-position: 3px -5px !important;
  width: 24px;
  height: 24px;
}*/

/*или*/
/*иконка Закрыть на вкладках главной формы в темах типа uniSencha2*/
/*.x-tab-default .x-tab-close-btn{
	font-size: 20px;
	height: auto;
    width: 19px;
}*/

а можно как-то определить и понять программно, какой тип темы используется?

По названию определять нельзя, это неправильно.

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...