Опубликован: 31.08.2006 | Доступ: свободный | Студентов: 3927 / 218 | Оценка: 4.14 / 3.89 | Длительность: 39:16:00
ISBN: 978-5-9570-0021-3
Лекция 11:

Использование модулей и процедур

Вызов процедуры типа Sub

Чтобы вызвать в программе процедуру Sub, укажите имя этой процедуры, а затем список аргументов, требуемых для этой процедуры. Например, чтобы вызвать процедуру BirthdayGreeting, можно ввести следующий оператор:

BirthdayGreeting("Роберт")

В этом примере процедура BirthdayGreeting вставляет имя "Роберт" в строку сообщения, и отобразит следующее окно сообщения.


Преимущество в экономии времени при использовании процедур становится очевидным, когда вы вызываете процедуру много раз, передавая ей в качестве аргумента переменную, как показано ниже:

Dim NewName As String
Do
   NewName = InputBox("Введите имя того, у кого сегодня день рождения.", "Список дней рождения")
   BirthdayGreeting(NewName)
Loop Until NewName = ""

Здесь пользователь может ввести столько имен для поздравлений с днем рождения, сколько пожелает. Следующее упражнение дает возможность попрактиковаться в использовании процедуры Sub для обработки еще одного типа ввода данных в программу.

Использование процедуры Sub для управления вводом данных

Процедуры Sub часто используются для обработки ввода данных в программу, когда информация поступает из двух или более источников и требуется, чтобы она была в одном и том же формате. В следующем упражнении вы создадите процедуру Sub с именем AddName, которая запрашивает у пользователя данные и форматирует текст так, что его можно отобразить в нескольких строках в текстовом поле. Процедура сэкономит ваше время, затрачиваемое на программирование, так как вы будете использовать ее в двух процедурах событий, и в каждой она будет связана с различными текстовыми полями. Так как процедура будет объявлена в стандартном модуле, ее нужно ввести только один раз.

Создание процедуры Sub для текстового поля
  1. В меню File (Файл) щелкните на команде Close Solution (Закрыть решение). Visual Studio закроет текущий проект (игровой автомат "Семерка").
  2. В папке c:\vbnet03sbs\Гл.10 создайте новый проект Windows Application (Приложение Windows) на Visual Basic с именем My Text Box Sub. Будет создан новый проект, и в Конструкторе Windows Forms появится пустая форма.
  3. Используя элемент управления TextBox, создайте два текстовых поля, расположенных в центре формы рядом друг с другом. Вы будете использовать эти текстовые поля для хранения имен сотрудников, которых вы будете прикреплять к двум отделам. Сегодня вы будете принимать собственные кадровые решения.
  4. Используя элемент управления Label, создайте над этими текстовыми полями две метки. Эти метки будут содержать названия отделов.
  5. Используя элемент управления Button, создайте три кнопки, по одной под каждым из текстовых полей, и одну в нижней части формы. Первые две кнопки вы будете использовать для добавления сотрудников в их отделы, последнюю кнопку - для выхода из программы.
  6. Установите для объектов формы свойства, приведенные в таблице. Так как текстовые поля будут содержать более одной строки, установите для них свойство Multiline на значение True, а свойство ScrollBars на значение Vertical. Эти установки обычно используются тогда, когда в текстовых полях отображается несколько строк текста. Также необходимо установить их свойства TabStop на значение False, а свойства ReadOnly на значение True, чтобы запретить пользователю изменять информацию.

    Объект Свойство Установка
    TextBox1 Multiline True
    Name txtSales
    ReadOnly True
    ScrollBars Vertical
    TabStop False
    Text (empty)
    TextBox2 Multiline True
    Name txtMkt
    ReadOnly True
    ScrollBars Vertical
    TabStop False
    Text (empty)
    Label1 Font Bold
    Name lblSales
    Text "Продажи"
    Label2 Font Bold
    Name lblMkt
    Text "Маркетинг"
    Button1 Name btnSales
    Text "Добавить имя"
    Button2 Name btnMkt
    Text "Добавить имя"
    Button3 Name btnQuit
    Text "Выход"
    Form1 Text "Включить в состав отдела"
  7. Измените размер и положение объектов так, чтобы ваша форма выглядела аналогично рисунку вверху следующей страницы.

    Теперь нужно добавить стандартный модуль и создать процедуру Sub общего назначения с именем AddName.


  8. Щелкните на команде Add New Item (Добавить компонент) в меню Project (Проект), выберите шаблон Module, а затем щелкните на Open (Открыть). В Редакторе кода появится новый стандартный модуль.
  9. Введите между операторами Module Module1 и End Module следующую процедуру AddName:

    Sub AddName(ByVal Team As String, ByRef ReturnString As String)
    	Dim Prompt, Nm, WrapCharacter As String
    	Prompt = "Введите сотрудника отдела  " & Team & "."
    	Nm = InputBox(Prompt, "Окно ввода")
    	WrapCharacter = Chr(13) + Chr(10)
    	ReturnString = Nm & WrapCharacter
    End Sub

    Эта процедура Sub общего назначения использует для запроса у пользователя имени сотрудника функцию InputBox. Она получает при ее вызове два аргумента: Team, являющийся строкой, содержащей название отдела, и ReturnString, который содержит пустую строковую переменную, которая будет содержать отформатированное имя сотрудника. ReturnString объявлена с ключевым словом ByRef, так что все изменения, сделанные в этом аргументе в процедуре будут переданы через этот аргумент обратно в вызывающий код.

    Прежде, чем имя сотрудника будет возвращено, к строке добавляются символы возврата каретки и перевода строки, и таким образом каждое имя в текстовом поле будет отображаться на отдельной строке. Это обычная методика, которую можно использовать для создания новой строки в любом тексте. Ваш Редактор кода должен выглядеть примерно так, как показано на рисунке ниже.


  10. Снова отобразите форму, а затем сделайте двойной щелчок мышью на первой из кнопок Добавить имя формы (кнопке под текстовым полем Продажи ). Введите в процедуре события btnSales_Click следующие операторы программы:

    Dim SalesPosition As String
    AddName("Продажи", SalesPosition)
    txtSales.Text = txtSales.Text & SalesPosition

    Вызов Sub-процедуры AddName включает один аргумент, передаваемый по значению ("Продажи") и один аргумент, передаваемый по ссылке ( SalesPosition ). Последняя строка использует аргумент, переданный по ссылке для добавления текста в текстовое поле txtSales. Оператор конкатенации (&) добавляет новое имя в конец текста в этом текстовом поле.

  11. Откройте в Редакторе кода раскрывающийся список Class Name (Имя класса) и щелкните на объекте btnMkt, а затем откройте раскрывающийся список Method Name (Имя метода) и щелкните на событии Click. В Редакторе кода появится процедура события btnMkt_Click.
  12. Введите в этой процедуре события следующие операторы:

    Dim MktPosition As String
    AddName("Маркетинг", MktPosition)
    txtMkt.Text = txtMkt.Text & MktPosition

    Эта процедура события идентична btnSales_Click, за исключением того, что она посылает в процедуру AddName слово "Маркетинг" и обновляет текстовое поле txtMkt. Имя возвращаемой локальной переменной (MktPosition) было изменено для того, чтобы сделать его интуитивно более понятным.

  13. Откройте раскрывающийся список Class Name (Имя класса) и щелкните на объекте btnQuit, а затем откройте раскрывающийся список Method Name (Имя метода) и щелкните на событии Click. В Редакторе кода появится процедура события btnQuit_Click.
  14. Введите в процедуре события btnQuit_Click оператор End.
  15. Щелкните на кнопке Save All (Сохранить все) стандартной панели инструментов.

Теперь запустите программу Text Box Sub.

Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Светлана Ведяева
Светлана Ведяева
Россия, Саратов