Предисловие.
В данный момент 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?
Программа Умножение на 8
* Расположить на форме 2 этикетки, 2 текстовых поля, 2 кнопки. Одна этикетка и одно поле служит для ввода числа, на которое вы будете умножать 8, другие служат для вывода результата. Одна кнопка закрывает программу, вторая умножает.
* Для работы программы необходима функции Str (переводит число в строку) и Int (переводит строку в число)
Программа Проверка значения
* Задача: метеоролог снимает 4 замера скорости ветра в сутки. Необходимо вычислить среднесуточную скорость.
* Обязательно провести проверку, чтобы случайно не было введено отрицательного значения. Если такое произойдет, то нужно:
o a. не выводить на форму результат подсчетов
o b. на этикетке вывести текст: Неправильный ввод данных!
Программа Текст и фокус
* Сделать поле ввода пароля, ввести пароль.
* Очистить поле ввода пароля.
* Ввести пароль. Если он совпадает с введенным ранее, то разрешить доступ к другому полю.
Сделать, чтобы при получении фокуса вторым полем в нем уничтожался предыдущий текст.
* Необходимое знать: событие GotFocus-получение фокуса компонентом.
метод Len- получение длины строки.
Автор: Dusk и Never
Information
- Posted on 31.01.2010 22:15
- Просмотры: 3992