В данный момент 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 | Изменение/не изменение по горизонтали соответственно количеству текста в Caption | true/false |
WordWrap | Изменение/не изменение по вертикали соответственно количеству текста в Caption | true/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?
- Расположить на форме 2 этикетки, 2 текстовых поля, 2 кнопки. Одна этикетка и одно поле служит для ввода числа, на которое вы будете умножать 8, другие служат для вывода результата. Одна кнопка закрывает программу, вторая умножает.
- Для работы программы необходима функции Str (переводит число в строку) и Int (переводит строку в число)
- Задача: метеоролог снимает 4 замера скорости ветра в сутки. Необходимо вычислить среднесуточную скорость.
- Обязательно провести проверку, чтобы случайно не было введено отрицательного значения. Если такое произойдет, то нужно:
- a. не выводить на форму результат подсчетов
- b. на этикетке вывести текст: Неправильный ввод данных!
- Сделать поле ввода пароля, ввести пароль.
- Очистить поле ввода пароля.
- Ввести пароль. Если он совпадает с введенным ранее, то разрешить доступ к другому полю.
Сделать, чтобы при получении фокуса вторым полем в нем уничтожался предыдущий текст. - Необходимое знать: событие GotFocus-получение фокуса компонентом.
метод Len- получение длины строки.