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


В данный момент 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 19:15
  • Просмотры: 534