Статья
Версия для печати
Обсудить на форуме
Урок 12 VB. Множественный выбор.


Предисловие.


В данный момент Never не может регулярно выпускать уроки по VB. Я продолжу их выпуск, но немного изменю структуру самих уроков. Урок будет состоять из 3-х частей:
  • Теория по языку (операторы, алгоритмы);
  • Приложение в котором будут постепенно описываться стандартные компоненты VB;
  • Задания. И еще, не забывайте задавать свои вопросы на форуме  обязательно отвечу, разъясню более подробно непонятные моменты.

Теория.


В 10-м уроке Невы рассматривались конструкции ветвления (оператор If). Бывают случаи, когда в зависимости от значения переменной, надо выполнить определенные действия. С помощью оператора If, это выглядит примерно так:

Код:
If x=0 Then
  MsgBox "x = 0"
Else If x<0 Then
  MsgBox "x < 0"
Else If x > 0 Then
  MsgBox "x > 0"
End If
End If
End If
Но такая запись является очень громоздкой, и при большом количестве условий и выполняемого кода, трудно читаемым Даю гарантию, что через полгода, после написания кода с такой конструкции, даже программист, написавший программу, при необходимости внесения изменения в код, потратит немало времени и сил на разбор такой конструкции

В Visual Baisic, как и в других языках высокого уровня, предусмотрена конструкция Select Case, которая позволяет выполнить одну из нескольких групп операторов в зависимости от значения условия, т.е. как раз для описанного выше случая.
Инструкция Select Case имеет следующий вид:
Код:
Select Case {Проверочное значение}
Case {Значение 1}
{Операторы 1}

Case {Значение 2}
{Операторы 2}

Case Else
{Операторы 3}
End Select
В качестве значения для блока Case можно указывать не только одно значение (1), но и несколько, разделенных запятой (2,3). Можно определять также области сравнения (4 to 6) или воспользоваться относительным сравнением (is>=9). Вместо непосредственного проверочного значения можно использовать ключевое слово is.

Наш предыдущий пример будет выглядеть так:
Код:
Select Case x
Case 0
MsgBox "x = 0"
Case is < 0
MsgBox "x < 0"
Case is > 0
MsgBox "x > 0"
End Select
Блок Case Else выполняется, если ни одно из предыдущих условий не является истинным.

Если условию Select Case соответствует несколько блоков Case, выполняется первый из них. Пример:
Код:
Select Case x
Case 0
MsgBox "x = 0"
Case -50 to 50
MsgBox "x между -50 и 50, кроме 0"
End Select
Во втором блоке Case обрабатывается значение от -50 до 50, однако значение 0 перехватывается первым блоком Case. Поэтому операторы второго блока Case будут выполняться, если x будет больше или равно -50 и меньше 0, а также больше 0 и меньше или равно 50.

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

Массивы элементов управления
Visual Basic предоставляет достаточно мощный и гибкий инструмент, называемый массивом элементов управления. Это контролы (обычно однотипные) с одинаковым именем и различными индексами. Если вы создаете два контрола с одинаковыми именами среда разработки Visual Basic сама предлагает вам создать массив, автоматически проставив индексы.
 
Например на форме ввода данных обычно присутствуют кнопки Ок, Применить и Отмена. Конечно же можно написать для каждой кнопки обработку события нажатия кнопки, но для более удобного чтения кода лучше назвать все кнопки одинаково, например butArray, и поместить их в массив элементов управления. Тогда обработка события нажатия кнопки будет выглядеть так:
Код:
Private Sub butArray_Click (Index as Integer)
Select Case Index

Case 0
{Обработка нажатия кнопки с индексом 0}

Case 1
{Обработка нажатия кнопки с индексом 1}

Case 2
{Обработка нажатия кнопки с индексом 2}
End Sub

Все наглядно и просто.

Таким образом удобно поступать и с другими контролами, например с OptionButton.

Задание:


1-й уровень сложности:
  Поместить на форму три. OptionButton поместить в массив элементов управления. При выборе OptionButton сообщать о выбранной опции.
2-й уровень сложности:
Добавить кнопку, при нажатии на которую, выводить сообщение о выбранной опции.

Обработку в обоих задачах производить с помощью конструкции Select Case.

Приложение к уроку


Компонент Этикетка. Свойства

ForeColorЦвет текста
BorderStyleСтиль рамки. Если выбран Fixed Single оформление рамки как у текстового поляnone
Fixed
Single
AppearanceНекоторая объемность
Alignmentвыравнивание
AutoSizeИзменение/не изменение по горизонтали соответственно количеству текста в Captiontrue/false
WordWrapИзменение/не изменение по вертикали соответственно количеству текста в Captiontrue/false

Компонент Текстовое поле


LockedПри значении true нельзя редактировать содержимое поляtrue/false
MultiLineПри true возможно размещение текста в несколько рядовtrue/false
ScrollBarОпределяет наличие полос прокрутки
  • 0-none нет
  • 1-Horizontalгоризонтальная
  • 2-Vertical вертикальная
  • 3-Both 2 полосы
SelStartМожно указать место размещения курсора с поле при установке фокусацифра. 0 самое левое положение в строке
SelLengthЗадает ширину точки ввода
SelTextЗадает текст, который заменит выделенный фрагмент во время выполнения программы.
PasswordCharЗадает символ, отображаемый в поле вместо вводимых символов
MaxLengthМаксимальное число символов, вводимых в поле
ToolTipTextСоздает текст всплывающей подсказки для поля

Cобытия Текстового поля
Change
- возникает при изменении значения текстового поля.

Задачи на алгоритмы с  разветвлением.

  • Описать алгоритм: вводятся 2 числа. Меньшее нужно заменить суммой этих чисел, большее - их разностью.
  • Ввести число. Вывести сообщение: является ли число положительным, отрицательным или нулем.
  • Имеется груз с габаритами a,b и c. Можно ли переместить его через прямоугольное отверстие с размерами e и f?

Программа Умножение на 8

  • Расположить на форме 2 этикетки, 2 текстовых поля, 2 кнопки. Одна этикетка и одно поле служит для ввода числа, на которое вы будете умножать 8, другие служат для вывода результата.  Одна кнопка закрывает программу, вторая умножает.
  • Для работы программы необходима функции Str (переводит число в строку)  и Int (переводит строку в число)

Программа Проверка значения

  • Задача: метеоролог снимает 4 замера скорости ветра в  сутки. Необходимо вычислить среднесуточную скорость.
  • Обязательно провести проверку, чтобы случайно не было введено отрицательного значения. Если такое произойдет, то нужно:
       
    • a. не выводить на форму результат подсчетов
    • b. на этикетке вывести текст: Неправильный ввод данных!

Программа Текст и фокус

  • Сделать поле ввода пароля, ввести пароль.
  • Очистить поле ввода пароля.
  • Ввести пароль. Если он совпадает с введенным ранее, то разрешить доступ к другому полю.
    Сделать, чтобы при получении фокуса вторым полем в нем уничтожался предыдущий текст.
  • Необходимое знать: событие GotFocus-получение фокуса компонентом.
       метод Len- получение длины строки.

Автор: Dusk и Never
Версия для печати
Обсудить на форуме