Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Kkarn
892 / 282 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
1

Перегруппировка кнопок на панели навигации

03.10.2016, 20:26. Просмотров 1006. Ответов 6
Метки нет (Все метки)

Добрый день.
Хочется решить один не очень принципиальный вопрос, более касающийся внешнего вида базы.
Итак, в базе (Аксес 2010) есть главная форма навигации, представляющая собой стандартную форму навигации - несколько кнопок сверху, в виде вкладок, по нажатию на которые в подчиненной форме открываются соответствующие подформы.

При входе в базу сначала открывается форма для входа, на которой пользователь выбирает уровень своего доступа к базе. И потом ему открывается главная форма, на которой ему отображаются только те кнопки вкладок, к которым он должен иметь доступ.

В принципе, это все я сделал, просто выключаю видимость ненужных пользователю кнопок. Только вот получается не очень красиво: нужные кнопки отображаются на своих местах, чередуясь с "дырками" от невидимых кнопок.
Как бы так красиво сделать, чтобы все доступные пользователю кнопки отображались подряд, без промежутков?..
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2016, 20:26
Ответы с готовыми решениями:

Изменить набор кнопок навигации в VB
Привет, All! )) Ребята, кто-нить подскажет, как можно изменить стандартный набор системных...

Аналоги системных кнопок навигации по форме
Нужно сделать аналоги системных кнопок навигации по записям и поиск, которые на скриншоте. ...

Код VB для включения и отключения кнопок навигации формы
Здравствуйте! Подскажите пожалуйста, как в VB включать и отключать кнопки навигации формы. Для...

Создать макрос в виде панели кнопок
Задание: Создать макрос в виде панели кнопок, предусмотреть кнопки для ввода записей в таблицу...

Программная перегруппировка отчёта
Подскажите, пожалуйста, как в VBA перегруппировать имеющийся отчёт определённым образом.

6
Вячеслав Я
Эксперт MS Access
2817 / 1360 / 214
Регистрация: 13.05.2011
Сообщений: 4,164
03.10.2016, 20:37 2
Kkarn, попробуйте ту часть кнопок, которая нужна пользователям сделать с одной стороны формы, а для администраторов с другой. Потом, ту другую часть, скрываете и ее пользователь не видит. У себя я еще сделал на форме другую вкладку, которая для других не доступна, а в ней уже все кнопки, которые нужны мне, но не пользователям.
0
Kkarn
892 / 282 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
03.10.2016, 21:16  [ТС] 3
Вячеслав Я, я про такое думал... Но не очень подходит. Хотелось бы решить задачу именно в этих условиях.
0
Aleks777
88 / 85 / 15
Регистрация: 13.04.2015
Сообщений: 545
03.10.2016, 21:41 4
Kkarn, я обычно такую проблему решаю вкладками (скрытием точнее их).
Определяем тип пользователя и показываем только необходимую вкладку
0
Kkarn
892 / 282 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
03.10.2016, 21:44  [ТС] 5
Aleks777, Да, с вкладками это было бы очень просто, они там автоматически перестраиваются... Только вот главная форма в данном случае сделана именно как форма навигации, то есть с использованием кнопок, макета и т.д., и очень хотелось бы, повторюсь, решить задачу, если это возможно, именно с этими условиями.
0
mobile
Эксперт MS Access
25621 / 13698 / 2945
Регистрация: 28.04.2012
Сообщений: 15,001
03.10.2016, 21:46 6
Лучший ответ Сообщение было отмечено Kkarn как решение

Решение

На каждого пользователя Вы очевидно знаете какие формы/отчеты на какой кнопке должны быть расположены. Можно задать их массивом в нужном порядке, лишние скрыть
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    Dim navTarName(), navTarCaption()
    Dim i
    navTarName = Array("Форма1", "Форма2")  'Массив имен форм в нужном порядке
    navTarCaption = Array("Что-то с Форма1", "Что-то с Форма2") 'массив названий на кнопках
 
    'Назначить кнопкам
    For i = 0 To UBound(navTarName) 
        Me.ЭлементНавигации0.Controls(i).NavigationTargetName = navTarName(i)
        Me.ЭлементНавигации0.Controls(i).Caption = navTarCaption(i)
    Next
 
    'Скрыть лишние кнопки
    For i = UBound(navTarName) + 1 To Me.ЭлементНавигации0.Controls.Count - 1
        Me.ЭлементНавигации0.Controls(i).Visible = False
    Next
Конечно вместо массивов лучше использовать таблицы метаданных, где для каждого сочетания роли и формы будут имена форм и капшены кнопок. Считать рекордсет и переназначить кнопки элемента навигации
2
Kkarn
892 / 282 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
03.10.2016, 22:00  [ТС] 7
mobile, Вот это - именно то, что хотелось! Как всегда, идеально, быстро и по существу) Преогромное спасибо, что бы я без Вас делал... Уже столько всяких полезных вещей узнал и научился благодаря Вашим подсказкам...
0
03.10.2016, 22:00
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2016, 22:00

Информация от нажатия кнопок на одной панели должна выводится на другой панели
Добрый день и удачи Всем! Помогите пожалуйста. Я начинающий программист в Delphi7.Проблема...

Позиционирование панели навигации
Как сделать так, чтобы при верстке navbar так сильно не смещался? Код такой: <ul class="nav...

Команда на панели навигации
почему то не видно команды в панели навигации для пользователей БЕЗ полных прав. документ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.