AlexanderP Posted April 9 Posted April 9 Добрый вечер! Хочется в таблицу в верхний левый угол добавить свою кнопку с привязкой в PopupMenu сделать что то типа такого я долго искал как это сделать и нашел один пост, но там как я понял происходит преобразование кнопки очистки фильтра а этого не хочется, т.к. эта кнопка тоже нужна можно как то новую копку добавить, к примеру выше кнопки очистить ? Quote
AlexanderP Posted April 11 Author Posted April 11 Добрый день! Sherzod, а по этой теме посмотрите ? Quote
Sherzod Posted April 11 Posted April 11 On 4/9/2025 at 9:09 PM, AlexanderP said: можно как то новую копку добавить, к примеру выше кнопки очистить ? Quote
AlexanderP Posted April 11 Author Posted April 11 18 minutes ago, Sherzod said: Sherzod код не вложили Quote
Sherzod Posted April 11 Posted April 11 42 minutes ago, AlexanderP said: код не вложили Я знаю, мне нужно подготовить код. Quote
Sherzod Posted April 12 Posted April 12 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. Далее работаете с меню как обычно — обработка команд идёт на серверной стороне. Quote
Sherzod Posted April 12 Posted April 12 * Хотя Вы также можете размещать кнопку меню ниже иконки очистки фильтров. Для этого потребуется немного изменить код: анализировать не индекс 0, а 1, и, соответственно, устанавливать отступ сверху, а не снизу (marginTop вместо marginBottom). Quote
AlexanderP Posted April 12 Author Posted April 12 3 hours ago, Sherzod said: * Хотя Вы также можете размещать кнопку меню ниже иконки очистки фильтров. Для этого потребуется немного изменить код: анализировать не индекс 0, а 1, и, соответственно, устанавливать отступ сверху, а не снизу (marginTop вместо marginBottom). Sherzod Спасибо!! я гляну чуть позже и отпишусь Quote
AlexanderP Posted April 12 Author Posted April 12 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'}) , но не хочет применяться можешь глянуть ? Видео-12-04-2025 130108.mp4 Quote
AlexanderP Posted April 14 Author Posted April 14 Добрый день! Sherzod, посмотрите по ему последнему вопросу ? Еще столкнулся с тем, что если в Options отключить dgFilterClearButton (в некоторых таблицах кнопка "Очистить" не нужна), то кнопка не создается увидел в что не создается контейнер x-autocontainer-outerCt, при отсутствии кнопки очистить. можно что то сделать, чтобы кнопка UniMenuButton создавалась при отключенном в Options dgFilterClearButton ? Quote
AlexanderP Posted April 15 Author Posted April 15 On 4/12/2025 at 1:13 PM, AlexanderP said: Sherzod, проверил все работает, но заметил такой момент, кнопка при загрузке чуть ниже верхнего края, мешает стиль padding у titleEl при нажатии на кнопку очистить фильтр, все ставится на место, как и должно быть я посмотрел и пытался сам по умолчанию скинуть стиль rowNumbererCol.titleEl.setStyle({padding: 'unset'}) , но не хочет применяться можешь глянуть ? Видео-12-04-2025 130108.mp4 186.93 kB · 0 downloads 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 Видео-15-04-2025 151253.mp4 Quote
AlexanderP Posted April 17 Author Posted April 17 Добрый день! Sherzod, посмотрите мои последние вопросы ? Quote
Sherzod Posted April 17 Posted April 17 14 minutes ago, AlexanderP said: посмотрите мои последние вопросы ? Добрый день! Я попробую проанализировать. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.