Файл: Лабораторная работа 6 Работа с формами.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 27.03.2024

Просмотров: 32

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.


EndWith

EndSub

После того, как на экран будет выведена форма с заполненным списком, выберите любой элемент списка и посмотрите, что будет введено в G4. Нажмите кнопку КОНЕЦ для завершения работы с формой.
Другие способы заполнения списков значениями:

  1. Массивом. Список состоит из одной колонки:

Private Sub CommandButton1_Click()

a = Array("Люкс", "Одноместный", "Двухместный")

With ListBox1

.List = a

.ListIndex = 0

End With

End Sub

  1. Прочитать предварительно введенные значения из ячеек рабочего листа:

Private Sub CommandButton2_Click()

With ListBox2

.RowSource = "c2:c4"

.ListIndex = 0

End With

EndSub

Примечание: в ячейки c2, c3, c4 предварительно введите с клавиатуры Люкс, Одноместный, Двухместный, соответственно.

  1. Поэлементно. Список состоит из двух колонок:

Private Sub CommandButton3_Click()

With ListBox3

.ColumnCount = 2

.AddItem ("Люкс")

.List(0, 1) = "3500 руб."

.AddItem ("Одноместный")

.List(1, 1) = "2000 руб."

.AddItem ("Двухместый")

.List(2, 1) = "2500 руб."

.ListIndex = 0

End With

End Sub

  1. Массивом. Список состоит из трех колонок:

Private Sub CommandButton4_Click()

Dim a(2, 2) As String

a(0, 0) = "Люкс"

a(0, 1) = "3500 руб."

a(0, 2) = "Обязательна бронь"

a(1, 0) = "Одноместный"

a(1, 1) = "2000 руб."

a(1, 2) = "Обычное заселение"

a(2, 0) = "Двухместый"

a(2, 1) = "2500 руб."

a(2, 2) = "Обычное заселение"

With ListBox4

.ColumnCount = 3

.List = a

.ListIndex = 0

End With

End Sub



Создайте такую форму и испытайте все варианты заполнения списков

P.S. Для первых трех кнопок (верхний ряд) установите свойства (помимо Caption):

  • AutoSize - значение False (убрать возможность изменения размера элемента управления в зависимости от введенных значений);

  • MultiLine- значение True (ввод многострочного текста)

  • WordWrap - значение True (автоматический перенос текста на новую строку, когда будет достигнута граница текстового поля, если MultiLine содержит значение true).


Пример 5.Создайте форму, содержащую поле со списком и две кнопки. Выбранное из списка значение запишите в ячейку K1.

P.S. Поле со списком следует заполнить перед использованием. Для добавления новых значений используется метод AddItem (Добавить элемент). Обычно вызовы этого метода помещают в обработчик события Initialize формы, на которой расположено поле со списком.

Работа с ComboBox аналогична работе с ListBox. Отличие только в том, что в поле со списком (во время работы с формой) можно с клавиатуры ввести недостающее значение.
Окно формы имеет вид:



Установите свойства объектов:

Объект

Свойство

Значение

CommandButton1

Caption

ВВОД

CommandButton2

Caption

КОНЕЦ ВВОДА

Кнопке КОНЕЦ ВВОДА назначим процедуру:

Private Sub CommandButton2_Click()

End

End Sub

КнопкеВВОДназначимпроцедуру:

Private Sub CommandButton1_Click()

Dim Список As String

Список = UserForm6.ComboBox1.Value

Sheets("Лист1") .Cells(1, 11) = Список

End Sub

Для инициализации поля со списком создадим процедуру:

Private Sub UserForm_Initialize()

ComboBox1.AddItem "Люкс"

ComboBox1.AddItem "Одноместный"

ComboBox1.AddItem "Двухместный"

EndSub

После того, как на экран будет выведена форма, откройте список (нажмите кнопку со стрелкой), укажите в списке требуемый элемент списка. Затем нажмите на форме кнопку ВВОД. Посмотрите, что будет введено в K1.

Затем введите с клавиатуры в поле своё значение, например, Полулюкс, нажмите кнопку ВВОД и посмотрите, что будет введено в K1.

Способы заполнения значениями поля со списком такие же, как и для списков (ListBox).

Пример 6. Создайте форму, содержащую поле для ввода текста, две кнопки и счетчик, значение которого будет считываться для ввода в текстовое поле, а затем записываться в клетку К4.
Окно формы имеет вид:




Установите свойства объектов:

Объект

Свойство

Значение

CommandButton1

Caption

ЗАПИСЬ

CommandButton2

Caption

КОНЕЦ


Для кнопки КОНЕЦ назначим процедуру:

Private Sub CommandButton2_Click()

End

End Sub

Для кнопки ЗАПИСЬ назначим процедуру записи значения текстового поля в клетку К4:

Private Sub CommandButton1_Click()

Cells(4, 11) = TextBox1.Text

EndSub

Со счетчиком (элементом SpinButton1) свяжем процедуру:

Private Sub SpinButton1_Change()

TextBox1.Text = CStr(SpinButton1.Value)

End Sub

Эта процедура выводит в текстовое поле текущее значение счетчика, преобразуя числовое значение счетчика в строковую переменную с помощью функции CStr.

Текстовому полю (элементу TextBox1) назначим процедуру:

Private Sub TextBox1_Change()

SpinButton1.Value = Cint(TextBox1.Text)

End Sub

Эта процедура используется для синхронизации значения счетчика и содержимого текстового поля: преобразует текстовое значение поля в числовое с помощью функции Cint.

Для задания максимального и минимального значения счетчика создадим процедуру:

Private Sub UserForm_Initialize()

SpinButton1.Min = 1

SpinButton1.Max = 10000000

EndSub

После того, как на экран будет выведена форма, с помощью кнопок со стрелками укажите нужное число. Затем нажмите на форме кнопку ЗАПИСЬ. Посмотрите, что будет введено в K4.

Можно перед началом работы со счетчиком в текстовое поле ввести число, а затем использовать счетчик – счетчик будет продолжать работу с этого числа.

Пример 7. Рамки (контейнеры) Frame.

Рамки визуально и логически объединяют некоторые элементы управления (чаще всего флажки и переключатели).

  1. Для флажков (элемент управления CheckBox) рамки используются как оформление для элементов управления.

Для объединения группы элементов управления в рамке (см. рисунок), сначала надо на форме расположить рамку, а затем заполнить ее элементами управления.



  1. Все переключатели (элемент управления OptionButton), расположенные на одной форме, автоматически объединяются в одну группу. Поэтому из всех этих переключателей выбран может быть лишь один. Как же быть, если на форме надо расположить несколько групп таких переключателей и выбрать один переключатель в каждой группе? Ответ на этот вопрос кроется в использовании рамок (элемент управления Frame). Переключатели, размещенные в пределах одной рамки, обрабатываются отдельно от переключателей, размещенных в других рамках и вне рамок на форме (на форме вместо термина переключатель используется термин радиокнопка).



Пример 8.Полоса прокрутки ScrollBar.

Создайте форму, содержащую две надписи и полосу прокрутки.



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

  • Max (Максимум) – минимальное значение полосы прокрутки (только целые неотрицательные числа);

  • Min (Минимум) – максимальное значение полосы прокрутки (только целые неотрицательные числа);

  • SmallChange (Маленькое изменение) – устанавливает шаг изменения значения при щелчке по одной из стрелок полосы прокрутки;

  • LargeChange (Большое изменение) – шаг, с которым меняется значение при перетаскивании бегунка полосы с помощью мыши;

  • Value (Значение) – возвращает значение полосы прокрутки (только целые неотрицательные числа).

Элемент управления Scrollbar использует события Scroll и Change, чтобы контролировать движение бегунка по полосе прокрутки.

Событие

Описание

Change

Происходит после перемещения бегунка, кода кнопка мыши отпущена (или при щелчке мышью по стрелкам на полосе прокрутки).

Scroll

Происходит при перемещении бегунка (во время перемещения).

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

Событие Change происходит после того, как бегунок отпущен, или когда нажаты кнопки прокрутки или полоса прокрутки.

Расположение кнопок полосы прокрутки (горизонтальное или вертикальное) выбирается автоматически в зависимости от ширины и высоты полосы прокрутки.

Введите следующие обработчики событий для полосы прокрутки:

Private Sub ScrollBar1_Scroll()

Label1.Caption = ScrollBar1.Value

End Sub

и

Private Sub ScrollBar1_Change()

Label2.Caption = ScrollBar1.Value

End Sub

Проверьте работу полосы прокрутки.
Пример 9. Использование выбранного из списка (или поля со списком) значения в текстовом поле на форме.


Список


текстовое поле TextBox1


Private Sub CommandButton1_Click()

End

End Sub

Private Sub ListBox1_Click()

With UserForm4 ‘укажитездесьсвоюформу

If ListBox1.Text = "Россия" Then

TextBox1.Text = "Население России - 140 млн. чел."

ElseIf ListBox1.Text = "Китай" Then

TextBox1.Text = "Население Китая - 1 млрд. чел."

Else

TextBox1.Text = "Население Японии - 120 млн. чел."

End If

End With

End Sub

Private Sub UserForm_Initialize()

With ListBox1

.AddItem "Россия"

.AddItem "Китай"

.AddItem "Япония"

.ListIndex = 0

End With

End Sub

Аналогично, для элемента управления ComboBox1.

Пример 10.Работа с несколькими формами.

Если в вашем проекте имеется несколько форм, вам понадобится работать с ними, показывая и скрывая их при необходимости. Чтобы отобразить форму, воспользуйтесь методом Show (Показать). Для скрытия формы используйте метод Hide (Скрыть).

Создадим несколько форм и настроим навигацию между ними. Одна из форм главная – из нее вызываются остальные формы.

Добавьте в проект три формы. Настройте свойство Caption:

Свойство

Форма №1

Форма №2

Форма №3

Caption

Главная форма

Первая форма

Вторая форма

Добавьте на форму UserForm11 (на главную форму) две кнопки. Одну из них подпишите «Показать первую форму», вторую – «Вызвать вторую форму». Эти кнопки должны скрывать форму UserForm1, и вызывать, соответственно, UserForm2 и UserForm3.

На форму UserForm2 добавьте кнопку с надписью «На главную». Нажатие на эту кнопку должно скрывать UserForm2 и отображать UserForm1. Аналогичную кнопку добавьте на UserForm3.
Окно проекта выглядит так:



Создадим обработчик события