Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Создание диалоговой формы « мастер путешествий »Содержание книги Похожие статьи вашей тематики
Поиск на нашем сайте
Откроем новый рабочий лист Excel. Перейдем в редактор Visual Basic (Alt+F11) и выберем в меню «Вставка» команду UserForm. В свойствах формы изменим имя формы(Name)и заголовок (Caption) на TripWizard. В нижней левой части формы разместим четыре кнопки (CommandButton). Изменим их заголовки на Назад, Вперед, Отмена и
Готово, а имена—на cmdPrevious, cmdNext,cmdCancel, cmdFinish соответственно.
Примечание.
Вы уже, наверно, обратили внимание, что при создании форм или элементов управления, VBA устанавливает их имена (свойство Name) по умолчанию. Но часто возникает необходимость в их смысловом переименовании (как сейчас, например). Для переименования объектов и переменных в среде Windows существует соглашение об именах. Его суть: имя начинается с короткого префикса, одинакового для всех объектов одного и того же рода (табл. 5.1). За ним следует собственно имя — идентификатор объекта. Будем в дальнейшем придерживаться этого соглашения при работе с элементами управления.
Таблица 5.1 — Примеры префиксов имен объектов
Поместим на форму четыре элемента управления Рамки (Frame) (Рисунок 5.10). Пронумеруем рамки, задав заголовки 1, 2, 3, 4 в свойстве Caption. Свойству SpecialEffect установим значение 2-fmSpecialEffectSunken (верхняя и левая границы объекта затенены, а правая и нижняя подсвечены; элемент углублен в окружающее окно).
Рисунок 5.10 — Форма TripWizard с размещенными
на ней элементами управления
Разместим в рамках элементы управления. На первой рамке поместим Label и ComboBox (Рисунок 5.10). Дадим полю со списком имя cboTransport.
На второй рамке разместим Label и три элемента управления OptionButton друг под другом (Рисунок 5.10). Дадим имена optAfrica, optAsia, optEuropa соответственно.
На третьей рамке разместим элементы Label и TextBox (Рисунок 5.10). Дадим текстовому полю имя txtNamet.
На четвертой рамке разместим элемент Label и два элемента управления CheckBox (Рисунок 5.10). Дадим флажкам имена chkHotel и chkMeals соответственно. Наложим по очереди все рамки точно друг на друга.
Примечание.
Если после этого понадобится перейти к нужной рамке (например, для внесения изменений), то необходимо сначала выбрать ее в списке объектов окна свойств формы TripWizard, а затем щелкнуть на контуре рамки правой кнопкой и в появившемся контекстном меню выбрать команду Переместить (Bring Forward).
Справа поместим кнопку с картинкой и назначим ей по клику мышкой переход на сайт отзывов http://www.otzyv.ru Для этого в процедуру обработки щелчка по кнопке надо поместить следующий код:
Private Sub CommandButton1_Click() ActiveWorkbook.FollowHyperlink Address:="http://www.otzyv.ru", _ NewWindow:=True End Sub
Рисунок 5.11 — Окончательный вид формы TripWizard
Итак, форма с необходимыми объектами готова (Рисунок 5.11). Создадим в редакторе модуль и поместим туда макрос запуска формы StartWizard:
Public Sub StartWizard() With TripWizard
Show End With End Sub
С помощью элементов управления создадим на листе Excel кнопку Путешествие и назначим кнопке созданный макрос. Но отображение рамок не произошло, кнопки тоже не работают (Рисунок 5.12):
Дело в том, что не обеспечена возможность перехода от рамки к рамке и не заданы начальные значения в списках (инициализация формы). Ну, и нажатие кнопок пока не обработано.
Введем переменную CurrentPanel (счетчик рамок (панелей)) и создадим подпрограмму ShowPanel, с помощью которых сможем в нужный момент вызывать требуемую рамку. Щелкнем два раза по свободному месту на форме TripWizard,тем самым попадем в окно редактирования кода формы.
Сначала объявим переменные и константы, общие для всех макросов:
Dim CurrentPanel As Integer 'Это счетчик рамок
Const FirstPanel = 1 Const LastPanel = 4
Затем создадим макрос ShowPanel и поместим в него следующий код:
Public Sub ShowPanel() 'Сначала делаем все рамки невидимыми frame1.Visible = False frame2.Visible = False frame3.Visible = False frame4.Visible = False
'Выбор рамки в зависимости от значения счетчика Select Case CurrentPanel Case 1 frame1.Visible = True 'если 1, то рамка 1 видима
Case 2 frame2.Visible = True 'если 2, то рамка 2 видима
Case 3 frame3.Visible = True 'если 3, то рамка 3 видима
Case 4 frame4.Visible = True 'если 4, то рамка 4 видима
Case Else End Select 'Окончание выбора'Даем название заголовку формы
Me.Caption = "TripWizard: Step " & CurrentPanel & " of " & LastPanel End Sub
Проинициализируем начальные значения мастера при его вызове. Для этого в коде формы создадим процедуру отклика на событие диалогового окна Initialize и поместим в тело процедуры следующий код:
Private Sub UserForm_Initialize() 'Задаем начальное значение счетчика
CurrentPanel = 1 'Запускаем процедуру показа первой рамки ShowPanel 'Введем список для ComboBox, находящегося в этой рамке With cboTransport .AddItem " Самолет "
.AddItem " Поезд " .AddItem " Корабль " End With End Sub Создадим процедуры отклика на щелчок для кнопок Отмена, Назад, Вперед и Готово.
Два раза щелкнем по кнопке Готово, тем самым мы создадим процедуру отклика кнопки на щелчок по ней. Запишем в появившемся окне редактирования кода следующее:
Private Sub cmdFinish_Click() Me.Hide
Me.Tag = vbOK End Sub
Затем, не выходя из окна редактирования кода, создадим еще 3 процедуры отклика.
Процедура отклика кнопки Отмена:
Private Sub cmdCancel_Click() Me.Tag = vbCancel End End Sub
Процедура отклика кнопки Назад:
Private Sub cmdPrevious_Click() 'Движение к предыдущей рамке CurrentPanel = CurrentPanel - 1
ShowPanel cmdNext.Enabled = True If CurrentPanel = FirstPanel Then cmdPrevious.Enabled = False Else cmdPrevious.Enabled = True End If End Sub
Процедура отклика кнопки Вперед:
Private Sub cmdNext_Click() 'Движение к следующей рамке CurrentPanel = CurrentPanel + 1 ShowPanel cmdPrevious.Enabled = True If CurrentPanel = LastPanel Then cmdNext.Enabled = False
Else cmdNext.Enabled = True End If End Sub
Для того чтобы на первом шаге кнопка Назад была не активна (ниже первого шага нам двигаться некуда), нужно для этой кнопки в свойстве Enabled поставить значение False.
Теперь, запустив макрос StartWizard, увидим, как происходит переход от одного состояния формы к другой. В каждом состоянии обеспечивается прием от пользователя определенной информации. Но в итоге не формируется никакого отчетного документа.
Чтобы это исправить, внесем изменения в макрос StartWizard: Public Sub StartWizard() Dim msg As String With TripWizard Show 'Последовательно обрабатываем щелчки мыши, 'выбирая данные с элементов управления и 'формируя информационную строку msg msg = " Имя: " &.txtName.Text & Chr(13) msg = msg & " Континент: " If.optAfrica.Value Then
msg = msg & " Африка " & Chr(13) Else If.optAsia.Value Then msg = msg & " Азия " & Chr(13) Else If.optEuropa.Value Then msg = msg & " Европа " & Chr(13) End If End If End If msg = msg & " Оплата включает: " If.chkHotel.Value Then msg = msg & " Гостиница " End If If.chkMeals.Value Then msg = msg & " Питание "
End If msg = msg & Chr(13) msg = msg & " Транспорт: " &.cboTransport.Value
MsgBox msg,, " Приятного отдыха!" End End With End Sub
Теперь можно протестировать работу созданного «Мастера путешествий» — от нажатия на кнопку «Путешествие» до нажатия на кнопку «Готово».
Появится результирующий отчет, составленный по данным, полученным на всех шагах «Мастера путешествий» (Рисунок 5.13).
Рисунок 5.13 — Результирующий отчет
Задание 5.5. Создание формы туристического ваучера
Измените макрос таким образом, чтобы в результате работы «Мастера» формировался ваучер на туристическую поездку, где были бы указаны следующие данные: ФИО путешественника, страна и город посещения, название отеля, срок пребывания, тип номера, вид питания, стоимость тура. Выразите сожаление, если клиент вышел, ничего не заполнив.
Для формирования многостраничности использовать элемент управления MultiPage.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2020-11-11; просмотров: 584; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.33 (0.007 с.) |