Как сделать меню в access?

Как в Access сделать верхнее меню или панель инструментов

Access очень популярен и многие программисты у себя в организации используют его в качестве клиентского приложения. А что бы пользователям было удобней пользоваться этим приложением, программисты пытаются разработать удобный интерфейс этого приложения, и для этого делают структурированное меню, и сегодня мы займемся рассмотрением так называемого «Верхнего меню», а точнее как его можно создать в Access 2003.

Как Вы поняли, что мы все действия будем делать в Access 2003, мы уже не раз затрагивали тему Access, например, рассматривали группировку данных в отчете и выпадающий список на форме, в общем, кое какую базу знаний мы уже имеем, и теперь пришло время поговорить о навигации, а точнее, о меню.

Пример реализации верхнего меню в Access

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

Данный пример реализован путем создания настраиваемой панели инструментов, и сейчас я покажу, как это можно сделать.

Создаем верхнее меню в Access

Для того чтобы создать такое меню, открываем Access в режиме конструктора и жмем в меню Сервис->Настройка Переходим на вкладку «Панели инструментов» и жмем «Создать»

Вводим название нашей панели инструментов, но так как мы ее будем использовать в качестве меню, так, и назовем «Верхнее меню» и жмем ОК.

Затем у Вас появится вот такая панель

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

Теперь осталось заполнить эту панель пунктами меню и назначить им ссылки на необходимые объекты (формы или отчеты). Для этого в окне «Настройка» переходим на вкладку «Команды» и опускаемся в самый низ, где мы увидим пункт «Новое меню»

Далее мы просто перетаскиваем это этот пункт на нашу панель инструментов. Это делается путем нажатия левой кнопки мыши и передвижение его в соответствующее место. После у Вас получится вот так

А для того чтобы переименовать данный пункт меню просто жмем правой кнопки мыши по данному пункту и вводим необходимое название, например «Справочники»

И таким образом добавляем столько пунктов сколько необходимо. Например, вот так

Читать еще:  Как сделать выпадающий список в access 2007?

Теперь осталось добавить под пункты с назначенными ссылками на объекты, для этого в окне «Настройка» вкладка «Команды» находим пункт «Все формы», вы, конечно, можете назначать все что угодно (отчеты, запросы), делается все также, но сейчас для примеры выбираем «Все формы». После чего у Вас отобразятся все формы, созданные в данном проекте (подразумевается, что они у Вас уже есть), выбираем нужную и перетаскиваем в необходимое место.

Теперь по нажатию данного пункта у Вас откроется соответствующая форма. Если Вам необходимо изменить название или задать иконку пункту меню жмем правой кнопкой мыши по пункту и меняем все что нужно

А если Вы хотите сделать, чтобы подпункт в меню раскрывался также как и основной пункт меню, т.е. получается третий уровень меню, то просто находим снова в окне «Настройка» пункт «Новое меню» и добавляем его в качестве подпункта.

Я думаю понятно, как можно конструировать меню, в общем, делаем до конца наше меню, и в конце сделаем, тип нашей панели инструментов, настоящим меню, для этого открываем меню, настройка, находим нашу панель и жмем ее свойства

Где выбираем тип «Строка меню»

А теперь, ну я думаю Вам известно, чтобы пользователи видели только те панели, которые им необходимы, в нашем случае это «Верхнее меню» заходим в Сервис->Параметры запуска

Где мы можем ввести название нашего приложения и задать меню по умолчанию, также пользователям лучше не видеть «окно базы данных». Кстати здесь же можно задать открытие формы при старте приложения, но мы пока этого не будем делать.

Теперь при запуске у пользователей будет отображаться только наше меню, а чтобы запустить Access и в частности наше приложение в режиме конструктора, я думаю не для кого, не секрет что это делается путем открытия Access с зажатой клавишей Shift.

Вот в принципе и все, наше меню готово и если Вы все сделали правильно, то у Вас все будет также как на самой первой картинке в начале статьи. На этом все удачи!

Studhelper IT

Разработка приложений, переводы книг по программированию

четверг, 20 февраля 2014 г.

Пользовательская лента меню Access 2007

Оформление пользовательской ленты меню в MS Access 2007 — задача не такая простая, как в Access 2003. Примеры из руководства к Office на сайте Microsoft содержат ошибки и не срабатывают. Создадим ленту на примере демонстрационной базы данных.

В демо-базе находятся пока одна таблица и одна форма. Тематика – медицина (учет пациентов в больнице). Перейдем к формированию ленты.
1. Путь первый. Создаем ленту с системными рисунками.
Настройки ленты будут храниться в системной таблице – USysRibbons. По умолчанию, системные объекты не видны. Чтобы их включить, переходим Пуск -> Параметры Access -> Текущая база данных. Спускаемся в раздел Переходы и нажимаем кнопку «Параметры переходов». Устанавливаем галочку «Показывать системные объекты».

Читать еще:  Как сделать запрос в access 2016 пример?

Сохраняем, закрываем. Создаем новую таблицу с полями:

Необходимо проверить, чтобы имена полей точно совпадали с указанными на рисунке. Поле ID – ключевое.
Сохраняем таблицу под именем USysRibbons.
Вот такая получилась база данных.

Что как бы подразумевается в этой базе. Справочник пациентов, справочник МКБ (это международная классификация болезней), документы госпитализации и выписки, отчет по статистике. На каждый объект (справочник и документ) должна быть форма. На каждую форму и отчет должен быть макрос (или функция в модуле). Создать макрос легко – в разделе «Создание» нажать кнопку «Макрос» выбрать из выпадающего меню «ОткрытьФорму» или «ОткрытьОтчет», затем в аргументах выбрать название формы или отчета.
Заполним таблицу с настройками ленты. В поле RibbonName запишем название нашей будущей ленты, допустим, MedStat.
В поле RibbonXml введем текст:

Пояснения по тексту:
Строчка ribbon startFromScratch=»true» показывает, что мы создаем свою ленту «с нуля», то есть остальных акцессовских менюшек не будет.
Затем описываем вкладки “tabs”. У каждой пишем название и id. Затем идут группы кнопок – Справочники, Документы и Отчеты. Затем описываем каждую кнопку, в параметре OnAction пишем название макроса, отвечающего за это действие. imageMso – это рисунок на кнопке. В этом варианте мы берем системные рисунки. Их можно посмотреть, если открыть Пуск -> Параметры Access -> Настройка. Видим список команд, выбираем из поля со списком пункт «Все команды» и ищем подходящий по смыслу значок. Если на строчку навести курсор, то всплывет строчка, в которой видно название рисунка (imageMso)

Вот его и указываем.
После ввода данных идем в параметры Access -> Текущая база данных и в параметрах ленты указываем нашу ленту

Если ее в списке нет, то базу нужно закрыть, снова открыть и выбрать ленту. И еще не забываем убрать галочку «Область переходов». Затем снова закрываем и открываем базу. Результат

2. Путь второй. Лента с пользовательскими рисунками
Как быть, если хочется, чтобы рисунки на кнопках были свои, подходящие к теме?
Скачаем набор иконок (или нарисуем) для своей базы. Все картинки нужно перевести в формат bmp, а то в итоге получится ошибка 481 – invalid picture, короче, неверный формат рисунка.
Закрываем базу, зажимаем кнопку Shift и, держа ее нажатой, запускаем базу снова. Появляется стандартное меню Access.
Здесь у нас опять распутье – можно загружать рисунки из папки на диске, можно хранить в базе данных. Первый способ предполагает постоянное расположение рисунков в одном месте и копирование их вместе с базой. Вместо ImageMso=”идентификатор” нужно писать
getImage=»onGetImage» И еще нужно создать функцию VBA
Function onGetImage(control As IRibbonControl, ByRef image)
Select Case control.ID
Case «myControl»:
Set image = LoadPicture(«c:imagesMyImage.bmp»)
End Select
End Function Лучше выбрать второй способ и хранить рисунки в базе данных. Но тут необходимо создать еще три объекта – таблицу для хранения рисунков, форму для их выбора и функцию VBA.
Есть два варианта хранения рисунков – в одной записи все рисунки и в каждой записи по рисунку. В первом случае код проще, но масштабируемость хуже. Если в базе много рисунков, возникнут сложности. Поэтому сразу выбираем второй вариант, потому что код все равно готовый и придумывать не нужно.
Создаем системную таблицу USysRibbonImages с полями:
ControlId – текстовое (идентификатор рисунка) – ключевое.
Images – вложение (Attachment) – один или несколько рисунков
Description – текстовое (описание).
Сейчас создаем форму. Выделяем эту таблицу, переходим на вкладку Создание и нажимаем кнопку «Форма». Сохраняем форму с тем же именем.
Вносим все нужные картинки, записывая для каждой уникальный идентификатор (такой же, как и идентификатор кнопки, например, frm1, если взять мой пример).
Создаем модуль в редакторе Visual Basic, в модуле пишем функцию
Public Function OnGetImage(control As IRibbonControl, ByRef image)
Static frmRibbonImages As Form
Static rsForm As DAO.Recordset2
Dim rsAttachments As DAO.Recordset2
If frmRibbonImages Is Nothing Then
DoCmd.OpenForm «USysRibbonImages», WindowMode:=acHidden
Set frmRibbonImages = Forms(«USysRibbonImages»)
Set rsForm = frmRibbonImages.Recordset
End If

Читать еще:  Как сделать таблицу из запроса в access?

rsForm.FindFirst «ControlId='» & control.Id & «‘»
If rsForm.NoMatch Then
‘ No image found
Set image = Nothing
Else
Set image = frmRibbonImages.Images.PictureDisp
End If
End Function Пояснение. Скрыто открывается форма с рисунками, определяется ее RecordSet. В этом RS по полю идентификатора ищется нужный рисунок. Если такой рисунок найден, то он присваивается по ссылке параметру Images.
Если приложение выдает ошибку, что какой-то объект not defined, то, возможно, не подключена библиотека с компонентом IRibbonControl. Нужно зайти в меню Tools -> References и поставить там галочку в строке Microsoft Office

Сохраняем. Сейчас нужно изменить таблицу с параметрами ленты. В поле RibbonXml вместо ImageMso пишем
getImage=»OnGetImage» То есть, например, получится такая строчка для первой кнопки:
button id=»frm1″ size=»large» label=»Пациенты» screentip=»Пациенты» supertip=»Пациенты» getImage=»OnGetImage» onAction=»mPatient» /> Сохраняем, перезапускаем базу. Если все нормально, то нужно еще загрузиться с шифтом и убрать из доступа системные объекты, а то мало ли пользователь доберется.
Вот итоговый результат:

Ссылка на основную публикацию
Adblock
detector