MyTetra Share
Делитесь знаниями!
Время создания: 16.03.2019 23:43
Текстовые метки: Multipage, ToolBox, userform, VBA, элементы управления
Раздел: !Закладки - VBA - Форма
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514406350viua5z6zf6/text.html на raw.githubusercontent.com

Элемент управления Multipage

августа 28, 2015 admin

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

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

рис . 1.1 Элемент управления MultiPage на панели ToolBox

рис. 1.2 Элемент управления  MultiPage на форме

После того, как вы выбрали компонент MultiPage в окне ToolBox и перетащили его на поверхность формы (UserForm), у вас будет только две вкладки для Набора страниц. Если вы кликните правой кнопкой мыши по корешку MultiPage vba, то вам откроется контекстное меню, со следующими пунктами:

  • NewPage – позволяет добавить новую страницу к уже      имеющимся. Обратите внимание, имена корешков страниц назначаются      автоматически (Page1, Page2, …. , PageN).
  • DeletePage – удаляет ту страницу, по корешку которой      вы кликнули.
  • Rename – позволяет переименовать выбранную      страницу, аналогично, вы можете сделать тоже самое в окне свойств      (свойство Caption).
  • Move – переместить выбранную страницу. После      клика вам откроется небольшое диалоговое окно, где вы сможете переместить      выбранную вкладку в заданном направлении.

Основные свойства для класса Multipage vba языка следующие:

MultiRow – свойство языка vba может принимать логическое True или False. Само свойство актуально в том случае, если вкладок страниц слишком много и они не помещаются в на поверхности формы. Если будет установлено значение False, то все корешки будут находиться на одной линии, для перехода к тем вкладкам, которые не видно, будут добавлены дополнительные кнопки. Если значение установлено в True – то при большом количестве вкладок, они будут располагаться в несколько строк.

TabOrientation – позволяет задать, где будут расположены корешки страниц, свойство предоставляет четыре значения: fmTabOrientationTop – расположении вверху, fmTabOrientationBottom – внизу, fmTabOrientationLeft – слева и fmTabOrientationRight – справа.

SelectedItem – содержит ссылку на объект выбранной страницы

Value – свойство позволяет получить номер той вкладки страницы, которая выбрана в данный момент, нумерация начинается с нуля.

Style – определяет стиль вкладок: fmTabStyleTabs – в виде закладок, fmTabStyleButton – в виде кнопок и fmTabStyleNone – вкладки отсутствуют

Основным событием для класса MultiPage является событие Change, оно возникает при переходе между вкладками.

Хорошо, теперь давайте напишем простой пример с компонентом VBA MultiPage.

Добавьте в окно Проектов новый модуль и форму (меню Insert, пункты UserForm и Module). Я всегда даю соответствующие имена для формы и модуля (свойство Name), в данном случае MPModule и MPForm. Теперь надо настроить внешний вид формы. Нм понадобятся только три элемента управления из окна ToolBox (меню View, пункт Toolbox):

MultiPage – добавляем а форму данный элемент управления, у вас автоматически появятся два флажка, кликаем по одному из флажков и жмем New Page, это добавить третью вкладку. В свойстве Caption пропишите для каждой вкладки: Флажок 1, Флажок 2 и Флажок 3.

ListBox – добавьте на поверхность объекта MultiPage список (ListBox), точнее, три списка, по одному на каждую вкладку.

Label – в самый низ формы добавьте компонент Надпись, он должен находится на поверхности формы UserForm. Свойство Caption оставьте пустым.

Теперь нам нужно прописать код для формы, жмем в окне проектов на наш объект UserForm (MPForm) и нажимаем кнопку View Code. В окне редактора кода прописываем следующие процедуры:

Private Sub MultiPage1_Change()

Label1.Caption = MultiPage1.SelectedItem.Caption

End Sub

Private Sub UserForm_Initialize()

For i = 0 To 50

ListBox1.AddItem “число_” & i

Next

For i = 50 To 100

ListBox2.AddItem “число_” & i

Next

For i = 100 To 150

ListBox3.AddItem “число_” & i

Next       Label1.FontSize = 16

Label1.ForeColor = &H1055F2

Label1.TextAlign = fmTextAlignCenter

Label1.Caption = MultiPage1.SelectedItem.Caption

End Sub

Давайте разберем код:

MultiPage1_Change – тут происходит обработка события Change, которое возникает при клике по флажкам. Каждый раз, когда мы будем переходить на ту или иную вкладку, в свойство Caption объекта Label будет записываться название выбранного флажка.

UserForm_Initialize – данная процедура будет выполняться при инициализации формы. Тут есть три цикла for, по одному на каждый объект ListBox, по сути, в цикле происходит простое заполнение списков. Далее идут настройки свойств:

  • Label1.FontSize –      задаем размер шрифта для объекта Надпись
  • Label1.ForeColor –      задаем цвет текста, которые отображается в поле Надпись
  • Label1.TextAlign –      выравниваем шрифт по центру
  • Label1.Caption  –      тут мы прописываем начальное значение для свойства Caption.

В принципе все, не забывайте, что в редакторе кода для модуля (макроса), нужно прописать процедуру, которая будет выводить форму:

Sub MPModule()

MPForm.Show

End Sub

Ну, вот и все, в статье мы кратко рассмотрели класс MultiPage VBA и написал небольшой пример.

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования