Урок № 13. Управляющие структуры
Этот раздел посвящён операторам, которые предназначены для управления процессом выполнения всех остальных исполняемых операторов Visual Basic. Такие классические структуры, как условные операторы и операторы цикла, имеются во всех процедурных языках программирования, имеются они и в Visual Basic.
Примечание: Здесь бы хотелось заметить, что управляющие структуры мы тоже будем называть операторами. Операторы, рассмотренные на предыдущем уроке используются в выражениях. А операторы рассматриваемые в этом уроке предназначаются для управления вычислением этих выражений (в документациях такие операторы называются — Statement). Важно понимать различие между этими операторами.
Условный оператор If. End If
Этот оператор вы уже встречали в восьмом уроке. Он необходим для принятия решений, нужно ли выполнять то или иное действие или нет. Другими словами если Логическое_выражение истинно, то Оператор выполнится. Если ложно, то выполнение не произойдёт.
If Логическое_выражение Then Оператор
If Логическое_выражение Then
    Группа_операторов
End If
В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один).
If (a = b) And (c <> d) Then
    b = d
    a = 20
End If
Скобки здесь не обязательны, но они повышают читабельность кода.
Условный оператор If. Else. ElseIf. End If
Такая конструкция используется для более сложных ветвлений:
If Логическое_выражение 1 Then
    Группа_операторов
ElseIf Логическое_выражение 2 Then
    Группа_операторов
.
Else
    Группа_операторов
End If
Эта схема может быть и в укороченном виде If. Then. Else. End If. При этом операторы после Else выполняются только в том случае, если ни одно из условий не выполнено.
If (a = b) Or (c <> d) Then
    b = d
    a = 20
Else
    c = d
End If
Выражение c=d будет выполнено только в том случае, если a<>b или c=d.
Условный оператор Select Case. End Select
Конструкция Select Case «принимает решение» на основе анализа значения одного выражения. При этот это выражение указывается в строке Select Case:
Select Case Анализируемое_выражение
Case Значение№1
    Группа операторов
Case Значение№2
    Группа операторов
.
Case Значение№N
    Группа операторов
Case Else
    Группа операторов
Конечно, анализируемое выражение должно возвращать значение типа, совместимого с типом значений в строка Case.
В зависимости от значения переменной iTest, строковой переменной strResult присваиваются различные значения
Select Case iTest
Case 1
    strResult = «iTest = 1»
Case 2, 3, 4
    strResult = «iTest = 2, 3 или 4»
Case 5 To 9
    strResult = «iTest находится в диапазоне от 5 до 9»
Case iTest Case Is > 9
    strResult = «iTest больше 9»
Case Else
    strResult = «iTest равно 0»
Оператор цикла For. Next
Этот цикл используют в том случае, когда заранее известно стартовое и конечное значение счётчика. Синтаксис выглядит следующим образом:
For Счётчик_цикла = Старт To Стоп Step Шаг
    Группа операторов
Next [Счётчик_цикла]
Роль счётчика цикла может играть только ранее объявленная переменная целочисленного типа. Шаг задаёт приращение счётчика цикла при каждом проходе. Умолчательно значение шага равно 1. После слова Next счётчик можно опустить.
В этом примере всем элементам массива iArray присваивается значение 5.
Dim c As Integer
Dim iArray(10) As Integer
For c = 0 To 10
    iArray(c) = 5
Next c
Оператор цикла For Each. Next
Эта специфическая форма цикла For предназначена для выполнения некоторой операции с каждым объектом, входящим в состав некоторой коллекции объектов (такой операцией, например, может быть вызов метода или присваивание значения свойству). Синтаксис оператора:
For Each ИмяОбъекта In ИмяКоллекции
    Операции над объектами
Next ИмяОбъекта
В этом примере показано, как изменить свойство BackColor у всех этикеток (Label), лежащих на форме
Dim x As Object
For Each x In Me.Controls
    If TypeName(x) = «Label» Then
        x.BackColor = 0
    End If
Next x
Me здесь — текущая форма. Т.е. не обязательно использовать полное имя формы для доступа к её свойствам. Например, для закрытия текущей формы, можно написать Me.Hide. (или Unload Me).
Оператор цикла Do While. Loop / Do. Loop While
Эти две разновидности цикла тесно взаимосвязаны, и их часто рассматривают как один из базовых видов цикла. Как уже отмечалось, циклы For применяют в тех случаях, когда количество проходов и диапазон изменения счётчика цикла заранее известны. Циклы While предназначены для ситуаций, когда количество проходов цикла заранее не известно, но зато известно условие выхода из цикла. Синтаксис цикла While:
Do While Условие_выхода
    Группа операторов
Loop
Do
    Группа операторов
Loop While Условие_выхода
Отличие между ними заключается в том, что условие выхода проверяется в одном случае перед очередным проходом, а в другом случае — после выхода. Если в цикле опустить условие выхода или это условие всегда выполняется, то получится бесконечный цикл. Например вот такой
Do While 2 > 1
    Degub.Print «Вечный цикл»
Loop
Если у вас случаянно получился такой цикл, то выйти из него можно при нажатии Ctrl+Break. Но это работает только в среде разработки.
Dim n As Integer
n = 100
Do While n >= 0
    n = n — 1
    Debug .Print n
Loop
Оператор цикла Do Until. Loop / Do. Loop Until
По своей логике цикл Until подобен циклу While с той лишь разницей, что проходы цикла выполняются до тех пор, пока условие выхода не выполняется.
Dim n As Integer
n = 100
Do
    n = n — 1
    Debug .Print n
Loop Until n
Выход из цикла Exit For / Exit Do
С помощью операторов Exit. можно осуществить досрочный выход из цикла вне зависимости от значения, которое имеет в данный момент условие выхода.
Dim n As Integer
n = 10
Do While n > 1
    n = n — 1
    Debug .Print n
    If n = 5 Then Exit Do ‘ Если счётчик = 5, то
                        ’выходим из цикла
Loop
Итак, управляющие структуры — очень важное и далеко не слабое звено в программировании на Visual Basic (да и не только на Visual Basic). Без таких использования таких структур не получится написать даже самую маленькую программу. Даже если и получится, то программа не будет представлять никакого практического интереса.
Но есть ещё более важное звено программы — функция. Вот как раз функциями мы сейчас и займёмся! Рассмотрев функции, мы уже сможем написать какую-нибудь полезную в хозяйстве програмку.
Конструкции управления visual basic
В VB.NET имеются следующие условные структуры:
Конструкция If. Then
Конструкция If . Then проверяет истинность некоторого условия и зависимости от результатов проверки выполняет определенный код:
Здесь проверяем, больше ли число num1 числа num2, и если num1 больше чем num2. то выводим сообщение. Но, допустим, мы захотим, чтобы в случае невыполнения этого условия тоже совершалось какое-нибудь действие. Тогда мы добавляем выражение Else и после него определяем те действия, которые будут совершаться, если программа не удовлетворяет условию в выражении If. Например, мы будем выводить сообщение, что первое число меньше второго:
Но как вы уже заметили, мы сделали немного неправильно. Так как первое число может быть не только больше или меньше второго: оба числа могут быть равны друг другу. В этом случае мы можем определить альтернативные условия с помощью ключевого слова ElseIf:
В данном примере мы использовали генератор случайных чисел, который представлен классом Random. Строка Dim R As New Random() выполняет инициализацию генератора случайных чисел. А в следующей строке Dim num1 As Integer = R.Next(100) мы присваиваем числу num1 случайное значение, которое выдаст нам генератор, причем в качестве максимально возможного значения выбрано число 100.
Конструкция Select Case
Конструкция Select Case подобна в конструкции If. Then, так как позволяет обрабатывать сразу несколько условий. После слов Select Case указывается сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями, помещенными после оператора Case. И в случае если значения совпали, то выполняется блок команд, помещенных после данного оператора Case. Конструкция завершается словами End Select. Если мы хотим определить действия, которые будут выполняться, если совпадений не выявлено, то мы можем использовать оператор Case Else, после которого помещаем блок действий по умолчанию. Блок Case Else необязателен и может не употребляться Так, мы можем переписать предыдущий пример с помощью Select Case:
Здесь мы также генерируем случайное число и последовательно сравниваем его значения. Обратите внимание на строку Case 3 To 25 — здесь мы задаем целый диапазон значений от 3 до 25. Также обратите внимание, что если будет найдено совпадение с одним из выражений Case, то остальные выражения Case рассматриваться не будут. То есть следующий код отработает только для выражения Case 1 , после чего программа осуществит выход из Select Case, несмотря на то, что новое значение числа совпадает с значением в следующем выражении Case:
Конструкция GoTo
Ну и в конце говоря об условных конструкций нельзя не упомянуть и оператор GoTo. Этот оператор требует после себя указание метки, на которую осуществляется переход. Например:
Как показывает практика, начинающие часто злоупотребляют использованием этого оператора, что приводит к написанию некрасивого и непонятного кода. Поэтому рекомендуется использовать данный оператор как можно реже и по возможности обходиться без него.
Интерфейс и компоненты Visual Basic
Проектирование программного кода осуществляется в Интегрированной среде разработки (Integrated Development Environment IDE). Основными компонентами IDE являются:
окно формы, предназначено для визуального проектирования;
окно кода, предназначено для написания кода вручную;
панель элементов управления, содержит объекты, размещаемые на форме при создании интерфейса;
окно свойств элементов управления;
окно проекта, в котором отображаются все составляющие проекта в виде иерархической древовидной структуры (проводник проекта).
Каждый объект проекта (формы и элементы управления) обладают свойствами, им соответствуют определённые события, реакция на которые называется методами.
ЛАБОРАТОРНОЕ ЗАНЯТИЕ № 3
Цель занятия:ознакомить студентов с составом проекта Visual Basic, визуальной средой разработки и синтаксисом языка.
Задание 1. Проект и интегрированная среда разработки Visual Basic
Используя проводник Windows откройте папку с проектом Visual Basic, указанную преподавателем (VB учебные \ 00 Наибольшее число).
Алгоритм задачи рассмотрен во втором разделе пособия (лабораторное занятие 2, задание 2)
Эта папка содержит шесть файлов, каждый из которых является частью проекта.
Файл с расширением ЕХЕ (MaxN.exe) – исполняемый файл, созданный в процессе компиляции исходного кода. Это результат проектирования, который может существовать независимо от других файлов проекта.
Остальные файлы проекта создаются автоматически в процессе его сохранения. Основными из них являются Проект1.vbp – файл проекта и Форма1.frm – файл формы. Установите указатель на первый из них, и два раза щёлкните по левой кнопке мыши. При этом произойдёт загрузка интегрированной среды разработки Visual Basic, которая приведена на рисунке 18.
Рис. 18. Интегрированная среда разработки Visual Basic.
Последовательно отыщите на экране и ознакомьтесь со следующими компонентами интерфейса:
─ главное меню – расположено в верхней части экрана;
─ панель инструментов – расположено ниже главного меню;
─ панель элементов – находится в левой части экрана;
─ окно формы – в центре экрана;
─ окно программного кода – в центре экрана;
─ окно свойств – в правой части экрана;
─ менеджер проекта – над окном свойств.
Обратите внимание на то, что часть компонентов интерфейса (окно элементов, окно формы, окно кода, окно свойств) содержат атрибуты окна Windows. Поэтому их можно перемещать, сворачивать и закрывать.
Закройте окно формы, окно свойств и панель элементов. Используя меню Вид (Просмотр), откройте закрытые компоненты.
Повторите выполненные операции, используя панель инструментов.
Закройте Visual Basic.
Задание 2. Создание интерфейса приложения с использованием визуальных средств программирования
Рассмотрим один из важнейших инструментов программирования на примере создания простейшего текстового редактора.
Используя меню Пуск \ Программы \ Microsoft Visual Basic 6.0 \ Microsoft Visual Basic 6.0, откройте окно Новый проект. В появившемся окне щёлкните по кнопке Открыть. На экране появится визуальная среда разработки Visual Basic.
На панели элементов щелчком указателя мыши утопите кнопку TextBox – текстовое поле, как показано на рис. 19.
Рис. 19. Кнопка TextBox.
Этот элемент управления используется для ввода текстовой информации. Элементы управления, размещенные на форме, принято называть объектами формы. Форма для них служит контейнером. Сама же форма тоже является объектом приложения. Совокупность этих объектов и есть пользовательский интерфейс.
Для размещения текстового поля на форме, установите указатель мыши в левый верхний угол предполагаемого текстового редактора и, удерживая левую кнопку мыши, переместите его по диагонали формы в правый нижний угол.
Полученный прямоугольник является текстовым полем (рис. 20). Если он выделен, вокруг него размещены угловые, вертикальные и горизонтальные маркера (маленькие чёрные квадратики). Маркера используются для изменения размеров текстового поля. Убедитесь в этом.
Рис. 20. Окно текстового редактора, размещённое на форме.
Если элемент управления активен, в окне свойств отображаются его свойства, в нашем случае свойства текстового поля (рис. 21). Окно свойств содержит две колонки. Колонку наименований (левая ) и колонку значений (правая). Значения свойств элементов управления могут быть изменены.
Установите указатель мыши в правую колонку напротив свойства text и удалите его значение. Обратите внимание на то, какие изменения произошли с текстовым полем.
Установите указатель мыши в правую колонку напротив свойства MultiLine. Откройте поле со списком, используя кнопку со стрелкой. В поле со списком выберите «True» (Да). Это позволит выполнять многострочный ввод текста. В противном случае текст можно будет вводить лишь в одну строку.
Рис. 21. Свойства текстового поля.
Из меню Вид (Просмотр) выберите команду План формы. Выполните щелчок по левой кнопке мыши. На экране появится окно План формы.
На панели инструментов нажмите кнопку Старт или меню Пуск \ Старт. Среда разработки Visual Basic переключится в режим интерпретации, который имитирует работу приложения в реальном масштабе времени. Необходимо учитывать, что это не результат проектирования, а лишь его промежуточный этап.
Опробуйте работу созданного текстового редактора. Для этого введите несколько текстовых строк.
На панели инструментов нажмите кнопку Конец или меню Пуск \ Конец, что позволит вернуться к процессу разработки проекта.
Рис. 22. Окно План формы.
В окне План формы (рис. 22) появится схематическое отображение создаваемой формы. С помощью указателя, удерживая левую кнопку мыши, разместите форму симметрично экрану монитора, который также схематично отображён в окне. После чего закройте окно План формы. Положение проектируемой формы относительно экрана зафиксировано.
Переместите указатель на форму и щёлкните левой кнопкой мыши. Форма, а следовательно и её свойства станут активными.
В окне свойств найдите свойство Caption. Удалите существующее значение (Form1) и наберите с клавиатуры новое (Редактор текстов). В заголовке создаваемой формы отобразится новое значение свойства Caption.
Обратите внимание на то, что свойство Name (Имя) также имеет значение Form1. Но разница между ними существенная. Свойство Caption определяет заголовок формы, тогда как свойство Name используется в качестве идентификатора объекта Форма в программном коде.
Переместите указатель на свойство Icon. Нажмите на кнопку с тремя точками. В окне Загрузить Пиктограмму выберите: VB Учебные \ Фотогаллерея \ ico \ Book01a.ico. В качестве пиктограммы может быть выбран любой файл с расширением ico. Выбранная пиктограмма помещается в строку заголовка формы. Она же будет являться значком к имени загружаемого файла проекта.
Используя проводник Windows, создайте в собственной папке папку Редактор. В процессе сохранения проекта можно изменять наименования файлов. Например, загружаемый файл можно назвать Редактор.ехе. Как правило, он эксплуатируется автономно. Сохраните проект в следующей последовательности:
Файл \ Сохранить Проект Как…
Файл \ Сохранить Form1 Как…
Файл \ Делать Project1.ехе…
Процесс создания загружаемого файла называется процессом компиляции.
Закройте визуальную среду программирования. Используя проводник Windows, убедитесь в том, что необходимые файлы проекта содержатся в папке Редактор. Загрузите исполняемый файл и проверьте его работоспособность.
Задание 3. Модули, процедуры и функции
Чтобы продолжить работу с проектом, необходимо загрузить файл с расширением vbp. Этот файл содержит структуру всего проекта.
Если после загрузки окно формы отсутствует, выберите в окне менеджера проекта (рис. 23) строку формы и щёлкните по ней кнопкой мыши. Для просмотра составляющих проекта используют кнопки Показать объект, Показать Код, которые расположены в левом верхнем углу окна (рис. 23).
Рис. 23. Окно менеджера проекта.
До сих пор мы использовали только визуальные средства программирования. Однако, этого недостаточно для создания полноценного проекта. Необходимо овладеть технологией написания программного кода (программы). Программный код состоит из модулей. Различают три типа модулей:
─ модули формы – основа проекта;
─ стандартные модули – доступны всем модулям проекта;
─ модули классов – используются для создания новых классов, объектов, свойств и методов.
Модули содержат процедуры общего назначения, процедуры обработки событий и функции.
В нашем случае Форма1 является модулем формы, который пока не содержит процедур и функций.
Любое приложение Windows после загрузки сохраняет состояние покоя до тех пор, пока не произойдёт внешнее воздействие на один из элементов управления. Такое воздействие называют событием. Реакция на событие – методом. Рассмотрим технологию создания и структуру процедуры обработки событий на конкретном примере.
Активизируйте окно формы, если оно не активное. Выделите текстовое поле Тext1 и разместите его в центре формы. Для этого используйте функциональное меню: Формат \ Центрировать в Форме \ Горизонтально; Формат \ Центрировать в Форме \ Вертикально.
На панели элементов утопите кнопку CommandButton (кнопка управления). Удерживая левую кнопку мыши, очертите на форме пространство ниже текстового поля. Свойству Caption данного объекта присвойте значение «Восстановить». Аналогичным образом создайте рядом вторую кнопку в соответствие с рис. 24.
Рис. 24. Форма Редактор текстов.
Выделите обе кнопки, удерживая клавишу CTRL. Отформатируйте их размеры с помощью функционального меню: Формат \ Сделать одного Размера \ Ширина; Формат \ Сделать одного Размера \ Высота.
Выделите текстовое поле Тext1. В окне свойств данного объекта выберите свойство Visible. Установите для этого свойства значение «False» (Нет), как показано на рис. 25.
Рис. 25. Свойство Visible.
Установка такого значения свойства Visible позволит скрыть на экране текстовое поле при загрузке приложения. Убедитесь в этом, используя режим интерпретатора. Вернитесь в режим проектирования приложения.
Необходимо создать процедуру, которая при нажатии на кнопку «Восстановить» (событие Click), обеспечила видимость текстового поля.
Установите указатель на кнопку «Восстановить» и дважды щёлкните по левой кнопке мыши. Автоматически откроется окно Редактора кода, в котором будет сформированы первая и последняя строчки процедуры обработки события Click:
Private Sub Command1_Click()
End Sub
Первая строка процедуры должна обязательно содержать зарезервированное слово Sub и имя процедуры, которое состоит из наименования объекта Command1 и наименования события Click, разделённых знаком подчёркивания. Private – обозначает то, что данная процедура доступна только для модуля Form1. Последняя строка процедуры содержит зарезервированные слова End Sub. Обратите внимание, что курсор расположен между первой и последней строками процедуры.
Нажмите клавишу Tab и наберите на клавиатуре выражение следующего содержания:
Text1.Visible = True
В этом выражении использован оператор присвоения – знак равно. Свойству Visible объекта Text1 присваивается значение True – истина. При этом объект следует отделить от его свойства точкой. Такая запись позволяет обеспечить видимость текстового поля.
Общий вид процедуры обработки события нажатия на клавишу «Восстановить»:
Private Sub Command1_Click()
Text1.Visible = True
End Sub
Самостоятельно создайте процедуру обработки события нажатия на клавишу «Удалить». Программный код этой процедуры должен выглядеть следующим образом:
Private Sub Command2_Click()
Text1.Visible = False
End Sub
Проверьте результаты программирования в режиме интерпретации.
Приведённые выше примеры демонстрируют технологию создания процедур обработки событий. По своей структуре функции схожи с процедурами. Однако имеют ряд существенных отличий:
─ функции всегда возвращают значения, процедуры никогда;
─ первая строка функции начинается с зарезервированного слова Function, за которым следует её наименование;
─ последняя строка функции завершается фразой End Function;
─ функция не связана с обработкой событий и может быть вызвана из процедуры.
В арсенале Visual Basic содержится много стандартных функций, использование которых облегчает работу программиста, так как для вызова функции достаточно указать её имя. Рассмотрим на конкретных примерах использование функций.
Используя кнопку Label (Метка), расположенную на панели элементов, отобразите в правом верхнем углу формы (над текстовым полем) прямоугольник. Этот элемент управления будет использоваться для отображения системной даты. Установите для его свойства Caption значение пробел, а для свойства BorderStyle значение 1- Fixed Single как указано на рис. 26.
Рис. 26. Свойства элемента управления.
Откройте Окно формы, если оно закрыто. Установите указатель на кнопку «Восстановить». Двойным щелчком по кнопке мыши откройте Редактор кода. Введите в тело процедуры обработки текущего события выражение вызова стандартной функции Date: Label1.Caption = Date. Функция Date всегда возвращает системную дату, которая присваивается свойству Caption объекта Label1. Теперь процедура будет выглядеть следующим образом:
Private Sub Command1_Click()
Text1.Visible = True
Label1.Caption = Date
End Sub
Создайте две функции одна из которых позволяет выводить на экран текстовую константу, например: “Первая программа на VB”, вторая — гасить изображение на экране и значение системной даты.
Для этого в последней, свободной строке Редактора кода наберите на клавиатуре первую строку функции titul: Function titul() и нажмите клавишу Enter. Последняя строка функции будет создана автоматически. Нажмите клавишу Tab и введите выражение Print «Первая программа на VB». Оператор Print позволяет выводить на экран текстовую константу, заключённую в двойные кавычки.
Function titul()
Print «Первая программа на VB»
End Function
Аналогичным образом создайте функцию гашения экрана. При этом можно использовать обычные средства Копирования и Вставки фрагментов текста через буфер обмена.
Function cle()
Cls
Label1.Caption = «»
End Function
Функция с наименованием cle содержит оператор гашения экрана Cls. В следующей строке свойству Caption объекта Label1 присваивается пустое значение, что соответствует двум последовательно набранным двойным кавычкам.
Для вызова функций наберите их имена в процедурах обработки событий как показано ниже:
Private Sub Command1_Click()
Text1.Visible = True
Label1.Caption = Date
Titul
End Sub
Private Sub Command2_Click()
Text1.Visible = False
Cle
End Sub
Проверьте результаты программирования в режиме интерпретации.
Вернитесь в Редактор кода. Разверните окно редактора на весь экран с помощью кнопки Развернуть (средняя из трёх кнопок, расположенных в правом верхнем углу окна). Созданный программный код, состоящий из процедур обработки событий и функций называется Модулем Формы 1.
Обратите внимание на то, что каждая процедура и функция отделены друг от друга горизонтальной чертой, что упрощает просмотр программного кода. Однако если модуль формы содержит значительное количество процедур и функций, чтение и редактирование такого модуля затруднено. Поэтому часто используются пояснения, которые принято называть комментариями. Любой комментарий начинается с одинарной кавычки, он не воспринимается компилятором и служит лишь для пояснения назначения фрагментов программного кода.
Введите следующие комментарии:
‘Процедура обработки щелчка по кнопке Восстановить
Private Sub Command1_Click()
Text1.Visible = True
Label1.Caption = Date ‘вызов стандартной функции
titul ‘вызов функции titul
End Sub
‘Процедура обработки щелчка по кнопке Удалить
Private Sub Command2_Click()
Text1.Visible = False
cle ‘вызов функции cle
End Sub
‘Функция вывода текста на экран
Function titul()
Print «Первая программа на VB»
End Function
‘Функция очистки экрана
Function cle()
Cls‘очистка экрана
Label1.Caption = «»‘очистка объекта Label1
End Function
Сохраните все файлы проекта в своей папке. Выполните компиляцию. Убедитесь в работоспособности загружаемого файла, полученного в процессе компиляции. Закройте проект.
Рассмотрим пример готового программного кода.
Используя проводник Windows, загрузите проект:
VB Учебные \ Проекты \ 01 Вызов процедуры \ Проект1.vbp
Откройте окно Редактора кода. Код приложения приведён ниже:
‘Общая процедура присвоения значения текстового поля
‘Text5 свойствам текстовых полей Text1,2,3,4
Sub Процедура()
Text1.Text = Text5
Text2.Text = Text5
Text3.Text = Text5
Text4.Text = Text5
End Sub
‘Процедура обработки события: Щелчок по кнопке Command1
Private Sub Command1_Click()
Процедура
End Sub
В данном примере рассмотрены две процедуры:
─ процедура обработки события.
Рассмотрите структуру общей процедуры и технологию обращения к ней. Определите, чем общая процедура отличается от процедуры обработки событий.
Просмотрите работу приложения в режиме интерпретации.
Закройте Visual Basic
Задание 4. Переменные, константы, объявление переменных
Переменная – это область памяти, которая характеризуется именем для ссылки на её значение и типом, определяющим вид данных, которые можно хранить в переменных. В константах хранятся значения, которые не изменяются на протяжении всего времени выполнения приложения.
Процесс резервирования участка памяти под переменную называется объявлением переменной. При объявлении переменных тип данных может быть обозначен знаком – идентификатором. Справочная информация о типах данных и идентификаторах приведена в приложении 1. Рассмотрим на конкретных примерах использование переменных в программном коде.
Создайте Новый проект Visual Basic.
Свойству Caption присвойте значение: Сложение двух чисел.
Аналогичный алгоритм рассмотрен в теоретической части второго раздела.
Для свойства Icon загрузите пиктограмму VB Учебные \ Фотогаллерея \ ico \ Mycomp.ico.
|
Рис. 25. Окно формы.
Разместите на форме три текстовых поля (TextBox) и одну кнопку управления (CommandButton).
Переместите форму в центр экрана.
Удерживая клавишу CTRL, выделите три текстовых поля. Отформатируйте их, используя меню Формат.
Снимите выделение трёх текстовых полей, щелчком мыши на свободном пространстве формы.
Последовательно выделяя каждое текстовое поле, установите для каждого из них значение свойства Text равным нулю. Для свойства MaxLength (максимальное количество вводимых символов) значение равное 4 для первых двух полей и значение равное 5 для третьего поля.
Свойству Caption элемента управления Command1присвойте значение: Вычислить.
Используя элемент управления Label (Label) разместите на форме подписи полей как показано на рис. 26.
Рис. 26. Интерфейс приложения.
Таким образом, создан интерфейс будущего приложения. Два первых текстовых поля будут служить для ввода целых четырёхзначных числовых значений. Щелчок по кнопке «Вычислить» должен обеспечить суммирование чисел и занесение результата в третье текстовое поле.
В учебных целях используем переменные a и b в качестве слагаемых, переменную с для хранения результата суммирования. Хотя их использование в такой простой задаче не обязательно.
Переменные должны быть объявлены. Иногда возникают ошибки при использовании не объявленных переменных. Во избежание такого рода проблем в начале модуля устанавливается оператор Option Explicit, который предупреждает программиста, когда встретится имя переменной, не объявленной явно. Если установить опцию Требуется переменные объявле (Инструменты \ Опции \ вкладка Редактор), то этот оператор будет добавляться автоматически в каждый вновь создаваемый модуль.
Откройте окно Редактора кода и проверьте наличие этого оператора. Если он отсутствует, наберите его на клавиатуре.
Объявите переменные, используя оператор Dim (см. приложение1):
Option Explicit
Dim a As Integer ‘число 1
Dim b As Integer ‘число 2
Dim c As Integer ‘результат
Все переменные объявлены как целые числа.
Второй вариант объявления переменных с помощью идентификатора приведён ниже:
Option Explicit
Dim a % ‘число 1
Dim b % ‘число 2
Dim c % ‘результат
Откройте Окно формы и дважды щёлкните по объекту Command1. В Редакторе кода будут сформированы первая и последняя строки процедуры обработки событий (щелчок по кнопке «Вычислить»):
Private Sub Command1_Click()
End Sub
Напишите следующую последовательность строк программного кода данной процедуры:
Private Sub Command1_Click()
a = CInt(Text1)
b = CInt(Text2)
c = a + b
Text3.Text = CStr(c)
End Sub
a = CInt(Text1) –присвоение значений данных, занесённых в текстовое поле Text1 переменной a.
Поле Text1 содержит текстовую информацию, а переменная a объявлено как число. Во избежание несоответствия типов данных, текстовая информация должна быть преобразована в числовую.
Для этих целей использована стандартная функция CInt. В скобках указан аргумент – текстовое поле.
b = CInt(Text2) –присвоение значений данных, занесённых в текстовое поле Text2, переменной b.
c = a + b –суммирование и пересылка результата в переменную c.
CStr(c) –функцияпреобразования числового значения, содержащегося в переменной, в текстовую информацию. Cstr – функция, с – аргумент (переменная).
Text3.Text = CStr(c)– присвоение значения, возвращаемого функцией, свойству Text текстового поля Text3.
Программный код модуля формы содержит одну процедуру обработки событий:
Option Explicit
Dim a As Integer ‘число 1
Dim b As Integer ‘число 2
Dim c As Integer ‘результат
Private Sub Command1_Click()
a = CInt(Text1)
b = CInt(Text2)
c = a + b
Text3.Text = CStr(c)
End Sub
Проверьте работу приложения в режиме интерпретации.
Создайте в собственной папке папку Переменные. Сохраните в ней проект. Выполните компиляцию. Закройте Visual Basic.
В проводнике Windows откройте папку Переменные и загрузите файл. Проверьте корректность работы созданного приложения.
Вопросы для самоконтроля:
1. Основные компоненты Интегрированной среды разработки Visual Basic и их назначение.
2. Компоненты программного кода Visual Basic (модули, процедуры и функции).
3. Структура процедуры и функции, их отличие.
4. Переменные и константы, типы данных.
5. Объявление переменных, идентификаторы.
6. Назначение оператора Option Explicit.
7. Создайте программный код вывода на экран текстовой информации.
8. Создайте программный код вычисления разности двух чисел.
9. Создайте программный код расчёта удельного веса объёма производства отрасли (Vотрасли) в общем объёме (Vпром.).Удельный вес рассчитывается по формуле:
Уотрасли = (Vотрасли /Vпром.) * 100%.
10. Создайте программный код расчёта удельного веса работников отрасли (Ч отрасли) в общей численности работников занятых в производстве (Чпром.).Удельный вес рассчитывается по формуле:
Уотрасли = (Чотрасли /Чпром.) * 100%.
11. Создайте программный код расчёта эффективности производства. Э = Р / З (Р – результаты, З– затраты).
ОБЛАСТЬ ОПРЕДЕЛЕНИЯ ПЕРЕМЕННЫХ, МАССИВЫ, КОНСТРУКЦИИ ЯЗЫКА
Область определения переменных
Переменные могут быть объявлены на уровне: процедуры, модуля, приложения. От того, где объявлена переменная, зависит возможность её использования или как принято называть область видимости переменной.
Переменные, объявленные на уровне процедуры, могут быть локальными (объявляются оператором Dim) и статическими (объявляются оператором Static). Локальные переменные теряют своё значение при выходе из процедуры. Статические переменные сохраняют последнее присвоенное значение.
Переменные модуля доступны всем процедурам данного модуля. Они объявляются оператором Private вначале модуля.
Переменные объявленные оператором Public доступны всем модулям проекта. Их называют открытыми переменными и объявляют вначале модуля. Справочные сведения о переменных приведены в Приложении 1.
Массивы
В массивах хранятся нумерованные наборы логически связанных переменных, доступ к значениям которых осуществляется по имени элемента массива и его номеру – индексу. Индекс массива начинается с нуля. Массивы объявляются теми же операторами, что и переменные.
Выделяют статические и динамические массивы. Границы статического массива заранее определены. Они указываются в скобках после наименования массива. Например:
Dim Spisok ( 149 ) As String – одномерный массив, состоящий из 150 строковых элементов.
Dim Tovar ( 19, 49 ) As Integer – двухмерный массив, содержащий 20 строк и 50 столбцов.
Границы динамического массива первоначально не определены. Например:
Dim Suma ( ) As Variant – динамический массив содержащий значения типа Variant.
В процессе выполнения программного кода массиву назначается действительное число элементов оператором ReDim. Например:
ReDim Suma ( 150 ) –такое назначение может быть выполнено только в рамках процедуры.
Конструкции языка
Конструкции языка позволяют изменять порядок выполнения операций (ветвление) или неоднократно повторять последовательность действий в
зависимости от определённого условия (циклы).
Краткая справочная информация об основных конструкциях языка приведена в приложении 2.
ЛАБОРАТОРНОЕ ЗАНЯТИЕ № 4
Цель занятия:привить студентам навыки работы с переменными и массивами. Обучить приёмам использования основных конструкций языка Visual Basic.
Задание 1. Массивы, конструкции языка (ветвление, циклы)
Рассмотрим технологию обработки массивов и построение конструкций языка на конкретном примере.
Требуется создать программу сортировки пяти целых чисел по возрастанию. Совокупность числовых значений рассматривать как одномерный массив, состоящий из пяти элементов. В качестве инструмента сортировки использовать простейший алгоритм поплавка. При котором, числа, имеющие меньший удельный вес (меньшее значение), “всплывают”.
Создайте новый проект Visual Basic.
На форме разместите следующие объекты в соответствие с рис. 27:
пять текстовых полей (Text1 – Text5),
управляющую кнопку (Command1).
Для указанных свойств объектов присвойте следующие значения (табл. 5):
Объекты | Свойства | Значения |
Форма1 | Caption | Сортировка |
Icon | VB Учебные \ Фотогаллерея \ ico \ Graph14.ico | |
Label1 | Caption | Введите пять чисел |
Text1, Text2, Text3, Text4, Text5 | Alignment | 1 Выровнять по Правому Краю |
MaxLength | ||
Text | ||
Command1 | Caption | Сортировать |
Алгоритм включает два вложенных цикла. Внутренний цикл (переменная j) содержит условие проверки двух смежных значений массива PU. Если расположенный выше элемент массива имеет большее значение, он перемещается ниже. При этом используется буферная переменная Sh, в которой временно сохраняются перемещаемые элементы массива.
После очередного прохода наращивается на 1 переменная внешнего цикла i.
Программный код с комментариями (выделены курсивом) приведён ниже.
Рис. 27. Интерфейс приложения.
Option Explicit
Dim PU(4) As Integer ‘Объявление массива
Dim Sh As Integer ‘Объявление буферной переменной
Dim i%, j%‘Объявление переменных цикла
Private Sub Command1_Click()
‘Заполнение массива PU данными
PU(0) = CInt(Text1)
PU(1) = CInt(Text2)
PU(2) = CInt(Text3)
PU(3) = CInt(Text4)
PU(4) = CInt(Text5)
i = 0: Sh = 0 ‘Инициализация переменных
Do While i <> 5 ‘Цикл всех проходов
Do While j <> 4 ‘Цикл одного прохода
If PU(j) > PU(j + 1) Then ‘Условие погружения
Sh = PU(j)
PU(j) = PU(j + 1)
PU(j + 1) = Sh
End If
j = j + 1
Loop
j = 0
i = i + 1
Loop
‘Пересылка значений элементов массива в текстовые поля
Text1.Text = CStr(PU(0))
Text2.Text = CStr(PU(1))
Text3.Text = CStr(PU(2))
Text4.Text = CStr(PU(3))
Text5.Text = CStr(PU(4))
End Sub
После создания программного кода сохраните проект. Выполните компиляцию. Закройте Visual Basic. Проверьте работоспособность приложения. Для этого загрузите исполняемый файл (файл с расширением ехе) введите пять числовых значений и выполните их сортировку.
Загрузите файл Проект1.vbp (VB Учебные \ Проекты \ 08 Пузырёк).
Найдите свойство формы Picture. Используя кнопку с многоточием, расположенную в поле свойства, измените картинку.
Закройте Visual Basic без сохранения проекта.
Задание 2. Конструкция Select Case
Создайте новый проект. Разместите на форме семь меток (Label 1 – 7), одно текстовое поле и управляющую кнопку Command1 (рис. 27).
Присвойте свойствам объектов значения, приведённые в таблице 6. Программный код должен реагировать на нажатие любой клавиши – событие KeyPress. Это событие выбирается из списка событий, который размещён в правой верхней части Редактора кода.
Объекты | Свойства | Значения |
Форма1 | Caption | Дни недели |
Label1 – Label7 | Caption | Понедельник – Воскресенье |
Visible | False | |
Label8 | Caption | Номер дня недели |
Text1 | Text | |
MaxLength | ||
Command1 | Caption | Сброс |
Рис. 27. Окно формы Дни недели.
При этом на экране должен появляться тот день недели, номер которого указан в текстовом окне.
Этот алгоритм рассмотрен во втором разделе (лабораторное занятие 2, задание 4).
Управляющая кнопка Сброс (Command1) используется для восстановления свойств меток (Label1 – 7). Эту операцию в дальнейшем будем называть инициализацией.
Создайте программный код приведённый ниже.
Option Explicit
‘ Общая процедура инициализации меток
Sub Сброс()
Label1.Visible = False
Label2.Visible = False
Label3.Visible = False
Label4.Visible = False
Label5.Visible = False
Label6.Visible = False
Label7.Visible = False
End Sub
‘ Вызов общей процедуры
Private Sub Command1_Click()
Сброс
End Sub
‘Нажатие на клавишу
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim dn% ‘Объявление переменной день недели
If Text1 <> «» Then ‘Если информация введена, тогда
dn = CInt(Text1) ‘она присваивается переменной dn,
Select Case dn ‘которая используется для анализа
Case 1 ‘Понедельник
Label1.Visible = True
Case 2 ‘Вторник
Label2.Visible = True
Case 3 ‘Среда
Label3.Visible = True
Case 4 ‘Четверг
Label4.Visible = True
Case 5 ‘Пятница
Label5.Visible = True
Case 6 ‘Суббота
Label6.Visible = True
Case 7 ‘Воскресенье
Label7.Visible = True
End Select
End If
End Sub
Сохраните проект. Выполните компиляцию. Закройте Visual Basic. Проверьте работоспособность приложения.
Загрузите файл Проект1.vbp (VB Учебные \ Проекты \ 06 Дни недели).
Ознакомьтесь с программным кодом.
Определите, какие новые элементы управления использованы в этом проекте.
Закройте Visual Basic без сохранения проекта.
Вопросы для самоконтроля:
- Что такое переменные и область их определения?
- Какие бывают массивы (статические, динамические массивы)?
- Как объявить переменную или массивов?
- Создайте программный код, содержащий одномерный массив из пяти элементов.
- Какие конструкции языка позволяют изменить порядок операций?
- Охарактеризуйте конструкции языка, позволяющие неоднократно повторять операции.
- Создайте программный код с использованием конструкции If … Then.
- Создайте программный код с использованием конструкции Select Case.
- Создайте программный код с использованием циклической конструкции.
- УПРАВЛЕНИЕ ПРОГРАММОЙ ПО СОБЫТИЯМ
Программный код Visual Basic состоит из процедур обработки событий. Основными событиями являются события щелчка мыши, перемещение мыши, события клавиатуры. Список событий активного объекта можно просмотреть в Редакторе кода.
Вложенные структуры управления (Visual Basic) Nested Control Structures (Visual Basic)
Можно разместить управляющие операторы внутри других операторов управления, If. Then. Else например блока For. Next внутри цикла. You can place control statements inside other control statements, for example an If. Then. Else block within a For. Next loop. Оператор управления, помещенный внутрь другой управляющей инструкции, называется вложенным. A control statement placed inside another control statement is said to be nested.
Уровни вложенности Nesting Levels
Структуры управления в Visual Basic могут быть вложены на столько уровней, сколько нужно. Control structures in Visual Basic can be nested to as many levels as you want. Распространенной практикой является более удобочитаемость вложенных структур путем создания отступов для текста каждой из них. It is common practice to make nested structures more readable by indenting the body of each one. Редактор интегрированной среды разработки (IDE) автоматически делает это. The integrated development environment (IDE) editor automatically does this.
В следующем примере процедура sumRows добавляет вместе положительные элементы каждой строки матрицы. In the following example, the procedure sumRows adds together the positive elements of each row of the matrix.
Next В предыдущем примере первая инструкция закрывает внутренний For цикл, а последняя Next инструкция закрывает внешний For цикл. In the preceding example, the first Next statement closes the inner For loop and the last Next statement closes the outer For loop.
Аналогично, в If вложенных инструкциях End If инструкции автоматически применяются к ближайшей If предыдущей инструкции. Likewise, in nested If statements, the End If statements automatically apply to the nearest prior If statement. Вложенные Do циклы работают аналогичным образом с самой внутренней Loop инструкцией, соответствующей Do самой внутренней инструкции. Nested Do loops work in a similar fashion, with the innermost Loop statement matching the innermost Do statement.
Для многих структур управления при щелчке ключевого слова все ключевые слова в структуре выделяются. For many control structures, when you click a keyword, all of the keywords in the structure are highlighted. If Например, если щелкнуть If. Then. Else Then End If Else конструкцию, будут выделены ElseIf все экземпляры . ивконструкции. If For instance, when you click If in an If. Then. Else construction, all instances of If , Then , ElseIf , Else , and End If in the construction are highlighted. Чтобы перейти к следующему или предыдущему выделенному ключевому слову, нажмите клавиши CTRL + SHIFT + стрелка вниз или CTRL + SHIFT + стрелка вверх. To move to the next or previous highlighted keyword, press CTRL+SHIFT+DOWN ARROW or CTRL+SHIFT+UP ARROW.
Вложение различных видов структур управления Nesting Different Kinds of Control Structures
Один тип структуры управления можно вложить в другой тип. You can nest one kind of control structure within another kind. В следующем примере With используется блок For Each внутри цикла With и вложенные If блоки внутри блока. The following example uses a With block inside a For Each loop and nested If blocks inside the With block.
Перекрывающиеся структуры элементов управления Overlapping Control Structures
Нельзя перекрывать структуры управления. You cannot overlap control structures. Это означает, что любая вложенная структура должна полностью содержаться в следующей самой внутренней структуре. This means that any nested structure must be completely contained within the next innermost structure. Например, следующее расположение недопустимо, так как For цикл завершается до завершения внутреннего With блока. For example, the following arrangement is invalid because the For loop terminates before the inner With block terminates.
Компилятор Visual Basic обнаруживает такие перекрывающиеся структуры элементов управления и сигнализирует об ошибке во время компиляции. The Visual Basic compiler detects such overlapping control structures and signals a compile-time error.
Visual Basic для новичков. Шаг за шагом. Самоучитель/справочник (Евгений Матвеев)
Для самостоятельного изучения языка Visual Basic, позволяет без помощи преподавателя, «с нуля» разобраться в основах программирования и научиться создавать полноценные приложения для Windows. Большое количество информации о Visual Basic также даёт возможность использовать книгу и в качестве справочника.
Оглавление
- Введение
- Глава 1. Установка Visual Basic на компьютер пользователя
- Глава 2. Знакомство с Visual Basic
- Глава 3. Использование мастеров
- Глава 4. Операторы и выражения
- Глава 5. Условные переходы и циклы
- Глава 6. Процедуры и функции
- Глава 7. Типы данных, переменные и константы
Приведённый ознакомительный фрагмент книги Visual Basic для новичков. Шаг за шагом. Самоучитель/справочник (Евгений Матвеев) предоставлен нашим книжным партнёром — компанией ЛитРес.
Глава 2. Знакомство с Visual Basic
В этой главе вы научитесь:
• запускать Visual Basic,
• находить нужные пункты меню,
• пользоваться кнопками панели инструментов,
• разбираться во всех основных объектах интерфейса,
• создавать проекты приложений,
• выбирать подходящий тип приложения,
• сохранять и открывать записанные проекты,
• напишите свою первую программу,
• правильно пользоваться справочной системой.
2.1. Обзор среды программирования
В главном меню Windows выберите команду Пуск – Программы – Microsoft Visual Studio 6.0 – Microsoft Visual Basic 6.0 (Start – Programs – Microsoft Visual Studio 6.0 – Microsoft Visual Basic 6.0) Запустится Visual Basic и на экране появится диалог New Project (Новый проект), раскрытый на вкладке New (Новый) (Рис.2.1).
Рис.2.1. Вкладка New (Новый)
диалога New Project (Новый проект)
Диалог New Project (Новый проект) предлагает пользователю возможность создания нового, либо открытия уже существующего проекта. Проект представляет собой разрабатываемое приложение. Он состоит из нескольких компонентов, хранящихся на диске в виде отдельных файлов, каждый из которых имеет соответствующее расширение:
• файлы форм с исходным кодом (*.frm),
• файлы форм с исполняемым кодом (*.frx),
• файлы модулей классов (*.cls),
• файлы дополнительных элементов управления (*.ocx),
Выбрав один из значков на вкладке New (Новый), можно создать новый пустой проект нужного типа или воспользоваться услугами одного из мастеров генерации приложений.
По окончанию работы мастера получается черновой вариант приложения с готовыми формами, меню, панелями инструментов и т. д. Потом программисту приходится дорабатывать много мелких деталей, но благодаря использованию мастера экономится время на построение основного каркаса приложения.
А теперь перечислим варианты создаваемых приложений или компонентов, которые выбираются на вкладке New (Новый) диалога New Project (Новый проект):
Standard EXE – стандартное приложение,
ActiveX EXE – компонент ActiveX в виде приложения,
ActiveX DLL – компонент ActiveX в виде динамически загружаемой библиотеки,
ActiveX Control – компонент ActiveX в виде инструмента Visual Basic для создания элементов управления,
VB Application Wizard – мастер приложений Visual Basic,
VB Wizard Manager – управляющая программа по созданию пользовательских мастеров,
Data Project – приложение для работы с базами данных,
IIS Application – приложение для Microsoft Internet Information Server,
Addin – дополнение для Visual Basic,
ActiveX Document Dll – документ ActiveX в виде динамически загружаемой библиотеки,
ActiveX Document Exe – документ ActiveX в виде приложения,
DHTML Application – приложение в виде динамической web-страницы,
VB Enterprise Edition Controls – стандартное приложение Windows с возможностью использования дополнительных элементов управления.
Для ознакомления со следующей вкладкой диалога New Project (Новый проект) щелкните мышью на ярлыке Existing (Существующий) (Рис.2.2).
Рис.2.2. Вкладка Existing (Существующий)
диалога New Project (Новый проект)
Вкладка Existing (Существующий) позволяет открыть сохраненный проект с любого постоянного или съемного диска, либо сетевого устройства, для чего сначала выберите папку, где он размещен, в открывающемся списке Папка (Folder), затем имя файла проекта в главном окне и нажмите кнопку Открыть (Open).
Теперь перейдем к вкладке Recent (Недавний) диалога New Project (Новый проект) (Рис.2.3).
Рис.2.3. Вкладка Recent (Недавний)
диалога New Project (Новый проект)
Здесь можно быстро вернуться к одному из последних редактируемых проектов Visual Basic, для чего достаточно выделить щелчком мыши имя файла проекта и нажать кнопку Открыть (Open).
Чтобы продолжить ознакомление с интерфейсом среды программирования Visual Basic, следует создать проект стандартного приложения. В этом случае станут доступными большинство пунктов меню и кнопок панели инструментов.
Вернитесь на вкладку New (Новый) (Рис.2.1) диалога New Project (Новый проект), щелчком мыши выберите значок Standard EXE (Стандартное приложение) и нажмите кнопку Open (Открыть). После этого будет создан новый проект с именем Project1, которое присваивается по умолчанию, и мы увидим среду программирования Visual Basic в режиме design (проектирование) (Рис.2.4).
Рис.2.4. Среда программирования Visual Basic
в режиме design (проектирование)
Перечислим объекты интерфейса среды программирования Visual Basic, видимые в настоящий момент:
• заголовок окна (Window Header),
• строка меню (Menu Bar),
• панель инструментов (Tool Bar),
• панель элементов управления (Tool Box),
• проводник проекта (Project Explorer),
• окно свойств (Properties Window),
• окно размещения формы (Form Layout Window).
Заголовок окна (Window Header) отображает название редактируемого проекта и текущий режим работы Visual Basic, как об этом говорилось выше.
Строка меню (Menu Bar) предоставляет программисту возможность пользования мощным арсеналом функций среды программирования Visual Basic (Рис.2.5).
Рис.2.5. Функции строки меню (Menu Bar)
Прямо под строкой меню, как у многих приложений Windows, находится панель инструментов (Tool Bar), кнопки которой дублируют наиболее часто используемые пункты меню Visual Basic. На панели инструментов, также, отображается справочная информация о положении и размерах выделенного объекта, либо расположении курсора в тексте программы (Рис.2.6).
Рис.2.6. Функции панели инструментов (Tool Bar)
В левой части окна Visual Basic располагается панель элементов управления (Tool Box) (Рис.2.7).
Рис.2.7. Панель элементов управления (Tool Box)
Большая часть элементов управления используется для оформления внешнего вида приложения и взаимодействия с пользователем. Подробно они будут рассмотрены в соответствующей главе.
Справа в верхнем углу расположено окно проводника проекта (Project Explorer), озаглавленное как Project – Project1 (Проект – Project1). В данном окне имеется древовидная структура со списком компонентов, которые входят в состав проектируемого приложения. Сейчас список содержит один единственный компонент – форму с именем Form1 (Рис.2.8).
Рис.2.8. Проводник проекта (Project Explorer)
Если щелкнуть правой кнопкой мыши на имени объекта в проводнике проекта, то появится контекстное меню, из которого можно выбрать нужное действие над этим объектом, например:
• отобразить на экране,
• сохранить на диске,
• распечатать на принтере,
Так как приложения Visual Basic строятся по модульному принципу, каждый компонент проекта хранится в отдельном файле.
Ниже находится окно свойств (Properties Window), имеющее заголовок Properties – Form1 (Свойства – Form1) (Рис.2.9).
Рис.2.9. Окно свойств (Properties Window)
С помощью данного окна можно просматривать или изменять значения свойств различных элементов управления, которые находятся на форме, а также и самой формы. Свойствами могут быть самими разными: название, размер, цвет и т. д.
Под заголовком окна находится открывающийся список, содержащий перечень элементов управления активной формы. Еще ниже можно увидеть список свойств выбранного элемента в виде пары: название свойства – его значение. Например, свойство Caption (Заголовок) имеет значение Form1.
Чтобы было удобнее ориентироваться в большом количестве информации, у списка свойств предусмотрено две вкладки, позволяющие выбрать порядок сортировки: Alphabetic (Алфавитный) или Categorized (По категориям). Наконец, под списком свойств находится подсказка о назначении свойства, выделенного щелчком мыши.
Следующее окно, которое мы рассмотрим – это окно размещения формы (Form Layout Window) (Рис.2.10).
Рис.2.10. Окно размещения формы
(Form Layout Window)
Оно отображает уменьшенную копию рабочего стола Windows с формой, расположенной на нем именно так, как это будет во время работы программы. Особенно ценным является возможность проверки местоположения формы на рабочем столе при различных разрешениях.
Все подчиненные окна прикрепляются к краям главного окна Visual Basic. Такой тип интерфейса называется MDI – Multiple Document Interface (Многодокументный интерфейс). В ранних версиях Visual Basic использовалась другая его разновидность, именуемая SDI – Single Document Interface (Однодокументный интерфейс), когда каждое дочернее окно было независимым.
Если требуется установить другой тип интерфейса, выберите команду меню Tools – Options… (Инструменты – Параметры…). Появится диалог Options (Параметры), где нужно перейти на вкладку Advanced (Дополнительно) (Рис.2.11).
Рис.2.11. Вкладка Advanced (Дополнительно)
диалога Options (Параметры)
После установки флажка SDI Development Environment (Однодокументная среда разработки) и нажатия кнопки OK, тип интерфейса поменяется на SDI – Single Document Interface (Однодокументный интерфейс).
Можно регулировать режим прикрепления отдельных дочерних окон и при использовании MDI – Multiple Document Interface (Многодокументный интерфейс), для чего следует перейти к вкладке Docking (Прикрепление) этого же диалога (Рис.2.12).
Рис.2.12. Вкладка Docking (Прикрепление)
диалога Options (Параметры)
Установка флажка слева от названия соответствующего подчиненного окна включает режим прикрепления к краю главного окна Visual Basic, а сброс флажка – выключает его.
Кроме объектов интерфейса среды программирования Visual Basic, примерно посередине экрана (Рис.2.4) располагается окно созданного проекта, имеющее заголовок Project1 – Form1 (Form) (Project1 – Form1 (Форма)), внутри которого находится отображаемая форма будущего приложения (Рис.2.13).
Рис.2.13. Форма Form1
в окне проекта Project1
Форма является отдельным окном будущего приложения. На ее поверхности в дальнейшем могут быть размещены элементы управления Windows: кнопки, поля для ввода текста, списки, флажки и др.
Сетка из мелких точек видна только во время разработки приложения и помогает программисту пропорционально разместить элементы управления на форме.
Та же самая форма в режиме выполнения будет выглядеть несколько по-иному, без направляющей сетки для размещения элементов и окна проекта (Рис.2.14).
Рис.2.14. Форма Form1
в режиме выполнения
Форма играет ключевую роль в подавляющем большинстве приложений, создаваемых с помощью Visual Basic. Кроме видимого интерфейса, она содержит подпрограммы обработки событий, выполняемые при щелчках мышью на кнопках формы, нажатиях на клавиши и другом взаимодействии пользователя с элементами, расположенными на форме.
Большинство других компонентов среды программирования Visual Basic, также, в той или иной степени связаны с формой, и содержат в своём имени её название, поэтому форму желательно не переименовывать, во избежание необходимости ручного переименования других компонентов программы.
Некоторые окна интерфейса Visual Basic по умолчанию не видны. Управлять их отображением на экране можно с помощью команд меню View (Вид). Одним из важнейших является Code Window (Окно кода), в котором вводится исходный текст подпрограмм, входящих в состав приложения.
Выполните команду меню View – Code (Вид – Код), после чего вы увидите окно кода (Рис.2.15).
Рис.2.15. Code Window
Другим часто используемым окном является Object Browser (Просмотр объектов), где можно не только просмотреть иерархический список доступных объектов, но и увидеть краткую информацию об их использовании в программе (Рис.2.16).
Рис.2.16. Object Browser
Остальные окна среды программирования Visual Basic будут рассмотрены в соответствующих главах.
2.2. Справка об объектах и их свойствах
Объектов в Visual Basic существует довольно много, а свойств у них еще больше. Запомнить все трудно, если не сказать, что практически невозможно, поэтому необходимо постоянно пользоваться встроенной справкой.
То же самое касается и инструкций, а также встроенных функций языка Visual Basic. Они конечно будут запоминаться постепенно, но не стоит переживать, если вы не помните точно название или синтаксис какой то инструкции.
Контекстно-зависимую справку среды программирования Visual Basic можно легко и просто вызвать на экран с помощью клавиши [F1].
Справка называется контекстно-зависимой потому, что отображаемый раздел справки зависит от текущего контекста, который определяется выделением любого объекта, а также названия свойства, метода или оператора языка Visual Basic, внутри которого установлен текстовый курсор.
Попробуем воспользоваться контекстной справкой Visual Basic на практике. Например, мы хотим получить подробную информацию об элементе управления ProgressBar (Индикатор выполнения).
Выделите мышью кнопку ProgressBar (Индикатор выполнения) в ToolBox (Панель элементов) и нажмите клавишу [F1]. Откроется окно справочной системы Visual Basic с информацией о данном объекте (Рис.2.17).
Рис.2.17. Справочная система Visual Basic – ProgressBar (Индикатор выполнения)
В верхней части текста описания, прямо под заголовком текущего раздела, есть несколько пунктов меню, которые можно выбрать для получения дополнительных данных:
See Also (Смотри также) – информация по родственным темам,
Example (Пример) – текст примеров кода,
Properties (Свойства) – перечень свойств,
Methods (Методы) – перечень методов,
Events (События) – перечень событий.
Допустим, что нам необходимо ознакомиться с примерами программирования элемента управления ProgressBar (Индикатор выполнения).
По идее, мы должны были бы выбрать пункт Example (Пример). Но в данном случае этот пункт недоступен, так как примеры кода расположены ниже. Поэтому, переместитесь вниз по тексту с помощью вертикальной линейки прокрутки, пока не появится пример процедуры с использованием элемента управления ProgressBar (Индикатор выполнения) (Рис.2.18).
Рис.2.18. Справочная система Visual Basic – текст примера процедуры с использованием ProgressBar
Все примеры, которые имеются в справочной системе Visual Basic, могут быть использованы в качестве образца, для чего их можно скопировать в свою программу и отредактировать по своему усмотрению.
Выделите нужную часть кода с помощью мыши и скопируйте в буфер обмена Windows с помощью комбинации клавиш [Ctrl] + [C] или [Ctrl] + [Insert].
Перейдите в свою программу и нажмите комбинацию клавиш [Ctrl] + [V] или [Shift] + [Insert] для вставки фрагмента кода.
Находясь в окне справочной системы Visual Basic, можно просмотреть содержание других тем, воспользоваться алфавитным указателем или поиском для нахождения требуемого раздела справки.
Чтобы найти нужную информацию, щелкните мышью на ярлыке Search (Поиск), расположенном в левой части окна справки. Раскроется вкладка Search (Поиск) справочной системы Visual Basic (Рис.2.19).
Рис.2.19. Вкладка Search (Поиск)
справочной системы Visual Basic
Щелкните мышью на поле ввода Search for following words (Искать следующие слова) и введите ключевые слова для поиска, при необходимости используя логические операторы: And (И), Or (Или), Near (Близко), Not (Не). Ввод этих операторов возможен не только вручную, но и выбором из списка, вызываемого при нажатии на кнопку справа от данного поля.
Для запуска поиска разделов справки, содержащих введенную комбинацию ключевых слов, нажмите кнопку Topics (Разделы) и ждите окончания процесса поиска. По его завершению, в левой части окна отобразится список найденных разделов.
Описанные выше возможности использования справочной системы доступны из меню Visual Basic. Содержание справки вызывается командой Help – Contents… (Помощь – Содержание), алфавитный указатель – следующим пунктом Help – Index… (Помощь – Указатель), а поиск – Help – Search… (Помощь – Поиск). С помощью меню Help, также, можно перейти на Web-сайт Microsoft для получения технической поддержки.
2.3. Первое приложение на языке Visual Basic
Теперь опробуем на практике весь процесс разработки приложения с помощью Visual Basic на примере простейшей программы Hello, World! (Привет, мир!). Это приложение будет иметь только две кнопки: Приветствие и Выход.
После нажатия кнопки Приветствие должен появляться диалог с сообщением Привет, мир!, а после нажатия кнопки Выход – происходить выход из программы.
Общеизвестная программа Hello, World! (Привет, мир!), обычно пишется всеми начинающими программистами, делающими свои первые шаги в освоении нового для них языка программирования.
Для продолжения процесса разработки данной программы воспользуемся уже созданным проектом с именем по умолчанию Project1, только сначала переименуем его.
В меню Visual Basic выберите пункт Project — Project1 Properties… (Проект – Свойства Project1…). На экране появится диалог настройки Project1 – Project Properties (Project1 – Свойства проекта), раскрытый на вкладке General (Общие) (Рис.2.20).
Рис.2.20. Вкладка General (Общие)
диалога настройки Project1 – Project Properties
(Project1 – Свойства проекта)
Дважды щелкните мышью на поле ввода Project Name (Название проекта) и замените имеющийся в нем текст Project1 на новый – HelloWorld. После этого нажмите кнопку OK для закрытия диалога настройки Project1 – Project Properties (Project1 – Свойства проекта).
Переименуем единственную форму нашего приложения. Для этого щелкните мышью в любом месте формы Form1, после чего в окне Properties – Form1 (Свойства – Form1) отобразится полный перечень ее свойств (Рис.2.21).
Рис.2.21. Окно свойств Properties – Form1 (Свойства – Form1)
В левом столбце окна свойств найдите свойство с названием Name (Имя), имеющее текущее значение Form1. Название свойства Name (Имя) заключено в круглые скобки потому, что используется в коде программ Visual Basic несколько по-другому, чем все остальные свойства.
Дважды щелкните мышью на значении свойства Name (Имя) в правом столбце и введите ПриветМир, после чего нажмите клавишу [Enter].
Таким же образом измените значение свойства Caption (Заголовок). Вместо старого значения Form1 впишите новое – Привет, мир! Обратите внимание, что здесь уже можно использовать пробелы, запятые и другие символы. Форма примет следующий вид (Рис.2.22).
Рис.2.22. Форма ПриветМир в окне проекта HelloWorld
Чем же отличаются эти два свойства? Свойство Name (Имя) обязательно присутствует у любого объекта Visual Basic. Оно однозначно идентифицирует или, другими словами, указывает на этот объект, чтобы к нему можно было обратиться из текста программы. Имя формы ПриветМир можно увидеть в строке заголовка окна текущего проекта: HelloWorld – ПриветМир (Form). Это окно служит для информационной цели и отображается только в режиме разработки приложения. Окно проекта внутри себя содержит саму форму ПриветМир.
Свойство Caption (Заголовок) есть только у тех объектов, которые могут иметь надпись, видимую на экране монитора, например, у объектов Form (Форма), CommandButton (Командная кнопка) или Frame (Рамка). У нашей формы надпись Привет, мир! можно сейчас увидеть в строке заголовка, где она, также, будет видна в момент выполнения приложения.
Теперь все готово для того, чтобы продолжить проектирование интерфейса нашего приложения, состоящего из одной формы, на которой должны располагаться две кнопки. Форма у нас уже есть. Остается разместить на ней кнопки и написать подпрограмму вывода на экран диалога с сообщением Привет, мир!
Размещение кнопки на поверхности формы подобно рисованию прямоугольника в стандартной программе Paint. Щелкните мышью на значке инструмента CommandButton (Командная кнопка) панели элементов управления (Tool Box) и установите указатель мыши над формой, который примет вид крестика:
Нажмите левую кнопку мыши и, удерживая ее в таком положении, переместите указатель мыши на пару сантиметров вправо и вниз от этой точки, а затем отпустите кнопку мыши. В заданном месте формы появится командная кнопка с надписью Command1.
Таким же образом разместите на форме вторую кнопку. После этого, она примет приблизительно такой вид (Рис.2.23).
Рис.2.23. Форма ПриветМир с двумя командными кнопками
Конечно, сразу трудно установить нужные размеры и расположение кнопок. Но Visual Basic позволяет затем изменить эти параметры, причем несколькими способами, которые являются общими для всех элементов управления:
Выделив элемент управления мышью, можно перетаскивать его на поверхности формы или изменять размер, ухватившись за один из квадратных маркеров, расположенных по его периметру.
Для более точной установки геометрических размеров элемента управления следует выделить его и установить числовые значения свойств Left (Левый), Top (Верхний), Width (Ширина) и Height (Высота) в Properties Window (Окне свойств). Первые два свойства указывают на координаты левого верхнего угла элемента управления, а последние – ширину и высоту объекта.
Теперь изменим надписи на кнопках, которые должны быть не Command1 и Command2, а Приветствие и Выход соответственно, а также дадим более информативные названия этим объектам.
Щелчком мыши выделите кнопку Command1, после чего в Properties Window (Окне свойств) отобразится список ее свойств.
Дважды щелкните мышью на значении свойства Caption (Заголовок) и вместо Command1 введите Приветствие. После этого, текст на кнопке сразу же поменяется.
Таким же образом измените свойство Name (Имя), установив у него новое значение – cmdHello.
Аналогичные действия произведите с кнопкой Command2, у которой свойствам Name (Имя) и Caption (Заголовок) присвойте значения cmdExit и Выход соответственно.
На этом этап проектирования интерфейса заканчивается, и мы переходим, собственно, к написанию текста программы.
Дважды щелкните мышью на кнопке с надписью Приветствие. Откроется окно кода с уже оформленным шаблоном подпрограммы cmdHello_Click, которая будет вызываться при нажатии на эту кнопку (Рис.2.24).
Рис.2.24. Окно кода с процедурой cmdHello_Click
Окно кода Visual Basic, кроме основной части, предназначенной для ввода текста отдельных подпрограмм и глобальных установок формы, содержит два открывающихся списка.
В левом списке можно выбрать элемент управления, а в правом – тип события, для реагирования на которое планируется написать подпрограмму на языке Visual Basic.
После выбора обоих значений в открывающихся списках, в основной части окна кода автоматически будет создана пустая процедура обработки данного события.
В данном случае, нужный элемент управления и тип события уже выбраны. Это – кнопка с именем cmdHello и событие Click (Щелчок). Текст пустой процедуры обработки события выглядит следующим образом:
Private Sub cmdHello_Click ()
Ключевое слово Sub, сокращение от Subroutine (Подпрограмма), служит для объявления (Declaration) процедуры cmdHello_Click, которая занимается обработкой события нажатия на кнопку cmdHello.
Название процедуры состоит из имени объекта, символа подчеркивания «_» и типа события. Именно это название указывает Visual Basic на связь данной процедуры с событием Click (Щелчок) кнопки cmdHello. Пустые круглые скобки говорят нам о том, что процедуре не передаются никакие параметры.
Модификатор Private (Частная) указывает на то, что данная процедура видна только в пределах своего контейнера, в данном случае – формы. Завершает процедуру инструкция End Sub.
Конечно же, пустая процедура ровным счетом ничего не делает – для того, чтобы она что-нибудь выполняла, нужно вписать хотя бы одну строчку программы внутри тела процедуры.
С этого момента начинается процесс кодирования (Coding), представляющего собой написание самого текста программы, выполняющей нужный функционал.
Кодирование является центральным звеном любой системы программирования. Visual Basic не является исключением, несмотря на то, что он позволяет минимизировать затраты времени на кодирование.
Нам остается, только, внутри процедуры вписать единственную инструкцию языка Visual Basic, выводящую на экран диалог с сообщением Привет, мир!:
Готовая процедура после этого примет следующий вид:
Private Sub cmdHello_Click ()
Затем дважды щелкните на второй кнопке с надписью Выход. Откроется процедура обработки события нажатия на эту кнопку.
В теле процедуры cmdExit_Click впишите инструкцию End, выполняющую функцию завершения работы приложения при возникновении события Click (Щелчок).
Текст второй процедуры теперь будет выглядеть таким образом:
Private Sub cmdExit_Click ()
Вот, собственно, и все! Остается только полюбоваться сделанной работой, проверив работоспособность написанного кода.
Для проверки жизнеспособности созданной программы, щелкните мышью на кнопке Start (Запуск) панели инструментов или нажмите клавишу [F5].
Visual Basic перейдет в режим выполнения и на экране появится работающее приложение Hello, World! (Привет, мир!) (Рис.2.25).
Рис.2.25. Работающее приложение
Hello, World! (Привет, мир!)
Сделайте несколько щелчков мышью на кнопке с надписью Приветствие. Появится диалог с нужным текстовым сообщением (Рис.2.26).
Рис.2.26. Диалог с текстовым сообщением
программы Hello, World! (Привет, мир!)
Полюбуйтесь на него с гордостью создателя своей первой компьютерной программы и нажмите кнопку OK для закрытия диалога.
Теперь щелкните мышью на кнопке Выход. Произойдет завершение работы программы и Visual Basic вернется в режим проектирования.
2.4. Сохранение проекта на диске и его загрузка
для продолжения программирования
Автор не сомневается в том, что создание приложений с помощью Visual Basic увлечет вас и возникнет необходимость в сохранении проекта на диске, а также его последующей загрузке для продолжения работы. Сделать это очень просто, аналогично сохранению документа Microsoft Office.
Просто щелкните мышью на кнопке Save Project (Сохранить проект) панели инструментов (Tool Bar), либо выберите команду меню File – Save Project (Файл – Сохранить проект) для сохранения всех компонентов проекта на диск. После этого Visual Basic последовательно выдаст запрос о сохранении отдельных компонентов. Сначала появится диалог Save File As (Сохранить файл как) с запросом о сохранении формы (Рис.2.27).
Рис.2.27. Диалог Save File As (Сохранить файл как)
Вы можете откорректировать предлагаемое имя формы в поле ввода File Name (Имя файла) или оставить его без изменений. Затем нажмите кнопку Сохранить (Save). После сохранения формы, появится диалог Save Project As (Сохранить проект как) с запросом о сохранении проекта (Рис.2.28).
Рис.2.28. Диалог Save Project As (Сохранить проект как)
Сразу нажмите кнопку Save (Сохранить) или предварительно измените имя файла проекта в поле ввода File Name (Имя файла).
На этом сохранение проекта будет завершено. При повторном сохранении не придется проделывать все действия заново – достаточно нажать кнопку Save Project (Сохранить проект) панели инструментов.
Существует еще одна более гибкая возможность сохранения отдельных компонентов проекта, что бывает необходимым, например, если изменения других компонентов сохранять не нужно.
В проводнике проекта (Project Explorer) разверните ветку Forms (Формы) щелчком мыши на значке. Здесь мы увидим имя формы ПриветМир (Рис.2.29).
Рис.2.29. Обзор компонентов проекта HelloWorld
в проводнике проекта (Project Explorer)
Щелкните правой кнопкой мыши на имени формы. Появится контекстное меню, с помощью которого можно выполнить все допустимые действия над данным объектом (Рис.2.30).
Рис.2.30. Контекстное меню
в проводнике проекта (Project Explorer)
Выберите пункт меню Save ПриветМир.frm (Сохранить ПриветМир.frm) для сохранения формы на диске.
Для настройки режима автоматического сохранения проекта воспользуйтесь пунктом меню Tools – Options (Инструменты – Параметры). Откроется диалог Options (Параметры). Щелчком мыши перейдите на вкладку Environment (Среда) (Рис.2.31).
Рис.2.31. Вкладка Environment (Среда)
диалога Options (Параметры)
Переключатель When a program starts (Когда программа запускается) установите в положение Save Changes (Сохранять изменения) и нажмите кнопку OK.
Вот и все, что касается сохранения проекта. Теперь попробуем загрузить сохраненный проект с диска.
Для того, чтобы открыть проект, выберите команду меню File – Open Project… (Файл – Открыть проект…). На экране появится диалог Open Project (Открыть проект), раскрытый на вкладке Existing (Существующий) (Рис.2.32).
Рис.2.32. Вкладка Existing (Существующий)
диалога Open Project (Открыть проект)
Сначала в открывающемся списке Folder (Папка) выберите диск и каталог, где находится проект, затем щелкните на имени файла и нажмите кнопку Open (Открыть).
Если вы уже раньше работали с сохраненным проектом, то его удобнее открыть немного по-другому. Щелчком мыши на ярлыке перейдите к вкладке Recent (Недавний) диалога Open Project (Открыть проект) (Рис.2.33).
Рис.2.33. Вкладка Recent (Недавний)
диалога Open Project (Открыть проект)
На этой вкладке не нужно выбирать папку, просто щелкните на имени проекта и нажмите кнопку Open (Открыть).
Тем или иным способом мы открыли нужный проект, но сам по себе Visual Basic не будет выводить формы на экран для редактирования, для этого их нужно отобразить сознательно.
Для вывода на экран дважды щелкните мышью на имени формы ПриветМир в окне проводника проекта (Project Explorer) (Рис.2.29), либо сначала щелкните на нем правой кнопкой мыши, а затем из появившегося контекстного меню (Рис.2.30) выберите пункт View Object (Просмотреть объект).
Оглавление
- Введение
- Глава 1. Установка Visual Basic на компьютер пользователя
- Глава 2. Знакомство с Visual Basic
- Глава 3. Использование мастеров
- Глава 4. Операторы и выражения
- Глава 5. Условные переходы и циклы
- Глава 6. Процедуры и функции
- Глава 7. Типы данных, переменные и константы
Приведённый ознакомительный фрагмент книги Visual Basic для новичков. Шаг за шагом. Самоучитель/справочник (Евгений Матвеев) предоставлен нашим книжным партнёром — компанией ЛитРес.
Конструкции управления visual basic
3.3.2. ������� InputBox
3.4. �������� �������� IF
If ������� Then ��������_1 Else ��������_2
������� 3.2. ���������� ���������
3.5. �������� ������ Select Case
[Case Else
End Select
For �������=���_�������� �o ���_�������� Step ���
[Exit For]
For Each ������� In ������
[Exit For]
����� � ������������ – Do While … Loop,
Do Until … Loop;
����� � ������������ – Do … Loop While,
Do … Loop Until.
‘ ���� � ������������ Do While … Loop
[Exit Do]
Loop
‘ ���� � ������������ Do Until … Loop
Do Until �������
Избавляемся от Visual Basic
Вот и настал тот переломный момент, когда мы решили перевести два проекта с VB на С#. Кому интересно — прошу под кат.
Введение
Данные проекты нам достались от подрядческой организации, которая писала их на протяжении лет 5-6. В общей сложности это около 1,5 млн. строк кода, если верить средству оценки метрик в Visual Studio, из которых около 30% на C#, а остальное на VB. Почему мы решили это сделать?! Скорее всего из-за нежелания работать с VB и отсутствия хороших vb-разработчиков.
Сроки, которые поставило наше руководство на полный перевод проектов, неумолимо стремились к чему-то близкому с нулем, коллеги, из подрядческой организации, тоже спешили расстаться с этими проектами и вздохнуть с облегчением. Отложив все не срочные дела, посидев на паре совещаний, мы приступили к реализации данной идеи.
Подготовка
Любое дело начинается именно с этого. Даже при лимите во времени и золотых руках, бросаться сразу в бой не следует, также поступили и мы.
В силу специфичных различий языков, необходимо предварительно подготовить проект для конвертации. Мы выделили несколько этапов, после которых будет, относительно безболезненно, проходить процесс конвертации.
Почему относительно?! Да потому, что после конвертации, в любом случае, имеется нотка неизвестного поведения программы. Это может всплыть сразу, если у вас код не покрыт 100% тестами. В нашем случае, я про тесты вообще промолчу, ибо нет их вовсе. Ну что ж – рассмотрим, что за шаги мы выделили:
1) Выбор инструмента для конвертации
Это очень важный этап на таком нелегком пути, ведь от того какую пилу выберешь, будет зависеть скорость и качество распила. После многочисленных вопросов гуглу и совещаний, мы остановились на двух продуктах: Instant CSharp и SharpDevelop версии 4.х (в версии 5.х конвертация не поддерживается), что очень странное, на мой взгляд, решение.
SharpDevelop бесплатен – это несомненно плюс, но и Instant CSharp имеет free версию, которая не отличается функциональностью от платной версии, лишь имеется ограничение на число строк в конвертируемом проекте. Плюсом Instant CSharp является то, что он лучше конвертирует WinForms. Есть у него и минус – это корректная конвертация только UTF файлов.
Решили использовать Instant CSharp для мелких проектов, а SharpDevelop для всего остального.
2) Составление списка VB проектов и формирование диаграммы зависимостей
Этот шаг необходим, чтобы наглядно понять с какой-же стороны начать работу. Приведу пример одной из диаграмм зависимостей, которая у нас получилась:
На данной диаграмме также указано число зависимостей между проектами. Из диаграммы, да и по логике вещей, видно, что порядок преобразования проектов — от проектов с меньшим количеством зависимостей к проектам с большим количеством зависимостей.
3) Замена ReDim на Array.Resize()
Был написан небольшой класс Re, чтобы реализовать данную замену.
Далее все вызовы ReDim Preserve X(N) заменили на Re.DimPreserve(X,N), а ReDim X(N) заменили на Re.Dim(X,N).
4) Включение опции компиляции strict
По умолчанию .NET Visual Basic или компилятор Visual Basic не обеспечивает строгую типизацию. Чтобы изменить это поведение по умолчанию, необходимо в свойствах проекта на вкладке Compile установить Option strict в значение on. После этого исправить все возникшие ошибки.
Следующие пункты не требуют разъяснений, так как они просты и понятны. Мы просто берем в руки ReSharper и выполняем все, описанные ниже пункты, со скоростью звука (а то и еще быстрее).
5) Для value type переменных заменить Nothing на Default
6) Замена And на AndAlso и Or на OrElse
7) Удаление конструкций Imports, ссылающихся на классы Замена вызова метода вида .Method на .Method()
9) Удаление конструкций Exit Try
10) Замена сравнения строковых переменных с Nothing или «» или со String.Empty на String.IsNullOrEmpty()
11) Замена ненужных директив ByRef на ByVal у параметров методов
12) Переименование методов, имеющих имя своего же класса
13) Исправление некорректных регистронезависимых вызовов в VB коде
Конвертация
И вот мы подошли к завершающему этапу – этапу конвертации. Инструмент выбран, проекты подготовлены и ждут своей участи.
Процесс конвертации не сложнее программы «Hello World», только требует немного большего времени. Приведу небольшой tutorial, как это делается в SharpDevelop и Instant CSharp.
1. Открыть UTFCast Express
2. В поле Source directory указать путь к каталогу проекта
3. В поле Target directory указать путь к каталогу в который будут перемещены файлы проекта в кодировке UTF8
4. Выстовить опцию Copy unconverted и запустить преобразование
И после этих танцев с бубном можно производить конвертацию проекта.
Вывод
В итоге мы перевели оба наших проекта полностью на c#.Сейчас идет, полным ходом, рефакторинг кода, кстати, не в рекламу будет сказано, но ReSharper в этом деле не заменим. В процессе эксплуатации, иногда, всплывают ошибки, связанные с конвертацией, но это неизбежно, увы.
Надеюсь, наш небольшой опыт будет полезен и вам, уважаемые хабражители.
Конструкции управления visual basic
Составные элементы управления являются тем средством, с помощью которого можно создавать и многократно использовать пользовательские графические интерфейсы. Составной элемент управления — это компонент, имеющий визуальное представление. Он может состоять из одного или нескольких элементов управления форм Windows Forms, компонентов или блоков кода, позволяющих расширить функциональные возможности (например, проверять допустимость вводимых пользователем данных, изменять свойства отображения или выполнять другие действия, необходимые разработчику). Составные элементы управления можно поместить в формы Windows Forms точно так же, как и другие элементы управления. В первой части пошагового руководства будет создан простой составной элемент управления ctlClock . Во второй части пошагового руководства функциональные возможности элемента ctlClock будут расширены с помощью наследования.
Примечание | ||||
---|---|---|---|---|
Примечание | |||
---|---|---|---|
Примечание | ||
---|---|---|
Примечание | |
---|---|
Примечание |
---|
Примечание |
---|