Jump to content

Recommended Posts

Posted

Добрый вечер!

Хочется в таблицу в верхний левый угол добавить свою кнопку с привязкой в PopupMenu

сделать что то типа такого

image.png.7e7e9f97cd3bafed52e66f78417763b3.png

я долго искал как это сделать и нашел один пост, но там как я понял происходит преобразование кнопки очистки фильтра

а этого не хочется, т.к. эта кнопка тоже нужна

можно как то новую копку добавить, к примеру выше кнопки очистить ?

image.png.d5b681349374fc6bc3b02df19172aca4.png

 

Posted
On 4/9/2025 at 9:09 PM, AlexanderP said:

можно как то новую копку добавить, к примеру выше кнопки очистить ?

image.png.d5b681349374fc6bc3b02df19172aca4.png

image.png.cd14ea239678458df431bc473139f4f9.png

Posted
15 hours ago, AlexanderP said:

код не вложили

Доброе утро!

Одно из возможных решений, попробуйте так:

1. Кидаете на форму компонент UniMenuButton, помещая его в UniHiddenPanel.

2. UniDBGrid.ClientEvents.UniEvents ->

function beforeInit(sender, config) 
{
    sender.attachMenuToRowNumberer = function(component) {
        var grid = this;

        var rowNumbererCol = grid.columnManager.getColumns().find(function(col) {
            return col.xtype === 'rownumberer';
        });

        if (rowNumbererCol) {
            component.setWidth('100%');
            rowNumbererCol.insert(0, component);

            component.setStyle({
                marginBottom: '2px'
            });

            if (rowNumbererCol.titleEl) {
                rowNumbererCol.titleEl.setHeight(0);
            }
        }
    };
}

3. В MainForm.OnReady вызываете метод:

procedure TMainForm.UniFormReady(Sender: TObject);
begin
  if dgRowNumbers in UniDBGrid1.Options then
  begin
    JSInterface.JSCall('attachMenuToRowNumberer', [UniMenuButton1.JSControl], UniDBGrid1.JSControl);
  end;
end;

4. Далее работаете с меню как обычно — обработка команд идёт на серверной стороне.

Posted

* Хотя Вы также можете размещать кнопку меню ниже иконки очистки фильтров.
Для этого потребуется немного изменить код: анализировать не индекс 0, а 1, и, соответственно, устанавливать отступ сверху, а не снизу (marginTop вместо marginBottom).

Posted
3 hours ago, Sherzod said:

* Хотя Вы также можете размещать кнопку меню ниже иконки очистки фильтров.
Для этого потребуется немного изменить код: анализировать не индекс 0, а 1, и, соответственно, устанавливать отступ сверху, а не снизу (marginTop вместо marginBottom).

Sherzod Спасибо!!

я гляну чуть позже и отпишусь

Posted
6 hours ago, Sherzod said:

Доброе утро!

Одно из возможных решений, попробуйте так:

1. Кидаете на форму компонент UniMenuButton, помещая его в UniHiddenPanel.

2. UniDBGrid.ClientEvents.UniEvents ->

function beforeInit(sender, config) 
{
    sender.attachMenuToRowNumberer = function(component) {
        var grid = this;

        var rowNumbererCol = grid.columnManager.getColumns().find(function(col) {
            return col.xtype === 'rownumberer';
        });

        if (rowNumbererCol) {
            component.setWidth('100%');
            rowNumbererCol.insert(0, component);

            component.setStyle({
                marginBottom: '2px'
            });

            if (rowNumbererCol.titleEl) {
                rowNumbererCol.titleEl.setHeight(0);
            }
        }
    };
}

3. В MainForm.OnReady вызываете метод:

procedure TMainForm.UniFormReady(Sender: TObject);
begin
  if dgRowNumbers in UniDBGrid1.Options then
  begin
    JSInterface.JSCall('attachMenuToRowNumberer', [UniMenuButton1.JSControl], UniDBGrid1.JSControl);
  end;
end;

4. Далее работаете с меню как обычно — обработка команд идёт на серверной стороне.

Sherzod, проверил все работает, но заметил такой момент, кнопка при загрузке чуть ниже верхнего края, мешает стиль padding у titleEl

при нажатии на кнопку очистить фильтр, все ставится на место, как и должно быть

я посмотрел и пытался сам по умолчанию скинуть стиль rowNumbererCol.titleEl.setStyle({padding: 'unset'}) , но не хочет применяться

можешь глянуть ?

 

 

Posted

Добрый день!

Sherzod, посмотрите по ему последнему вопросу ?

Еще столкнулся с тем, что если в Options отключить dgFilterClearButton (в некоторых таблицах кнопка "Очистить" не нужна), то кнопка не создается

увидел в что не создается контейнер x-autocontainer-outerCt, при отсутствии кнопки очистить.

можно что то сделать, чтобы кнопка UniMenuButton создавалась при отключенном в Options dgFilterClearButton ?

Posted
On 4/12/2025 at 1:13 PM, AlexanderP said:

Sherzod, проверил все работает, но заметил такой момент, кнопка при загрузке чуть ниже верхнего края, мешает стиль padding у titleEl

при нажатии на кнопку очистить фильтр, все ставится на место, как и должно быть

я посмотрел и пытался сам по умолчанию скинуть стиль rowNumbererCol.titleEl.setStyle({padding: 'unset'}) , но не хочет применяться

можешь глянуть ?

 

 

Sherzod с этим моментом вроде как сам разобрался, унес изменение стиля сюда, не знаю насколько это правильно, где то на форуме подсмотрел что можно стиль менять в afterlayout

function afterlayout(sender, layout, eOpts)
{
  sender.columnManager.getColumns().forEach(function(col)  {
   if (col.xtype && col.xtype == 'rownumberer') {
     if (col.titleEl) {
           col.titleEl.setStyle({padding: 'unset'});
           col.titleEl.setHeight(0);
      }
    }
  });
}

 

но возникла еще проблемка, когда пытаюсь перенести поле кнопка исчезает, глянул по логам в этот момент возникает событие reconfigure

тоже само возникает если поле выключить или включить таким образом UniDBGrid1->Columns->Items[3]->Visible = false/true

 

 

 

Posted
14 minutes ago, AlexanderP said:

посмотрите мои последние вопросы ?

Добрый день!

Я попробую проанализировать.

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