Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Область видимости переменных
Переменные, с которыми нам приходилось иметь дело до сих пор, объявлялись словом Dim (сокращение от Dimension, то есть «размерность»). Оно объявнную в процедуре. При этом обращаться к такой переменной можно лишь из той же процедуры. Другими словами, вы не сможете определить или задать ее значение из другой процедуры, находящейся в той же или другой форме или в стандартном модуле. Такие переменные называются локальными (то есть видимыми только в данной процедуре). Чтобы переменная была видна на уровне модуля, ее необходимо объявить несколько иначе. Во-первых, объявление должно находиться в секции (General) (Declarations) формы или стандартного модуля. Во-вторых, вместо Dim используется ключевое слово Private (хотя Dim также поддерживается для обеспечения совместимости с более ранними версиями Visual Basic). Объявленная таким способом переменная доступна на уровне модуля, и к ней можно обращаться из любой процедуры данного модуля — ее область видимости шире, чем у локальных переменных (рис. 7.6). Projectl.Vbp Рис. 7.6. Область видимости переменных
Кроме того, переменная может быть доступна на уровне всего приложения. Такие переменные часто называются открытыми, или глобалъными. Они объявляются в секции (General)(Declarations), но вместо Dim или Private используется ключе-вое слово Global. Обычно в таких случаях в проект включается стандартный модуль с расширением.BAS, а все глобальные переменные помещаются в его секцию объявлений. Чтобы лучше понять, чем отличаются области видимости, рассмотрим следующий пример: 1. Создайте новый проект. 2. В окне Project Wizard выберите значок Standard EXE. 3. Добавьте в проект модуль — для этого следует щелкнуть правой кнопкой мыши в окне проекта и выбрать из контекстного меню команду Add > Module. 4. В диалоговом окне Add Module выберите значок Module. Созданный модуль Module1 открывается в окне программы. 5. В окне программы добавьте следующий фрагмент:
Option Explicit Global UserID As String Global ACL As Integer
6. Добавьте в модуль Module1 следующую процедуру:
Public Sub InitApp() UserID = " Джо" ACL = 255 End Sub
Прежде чем идти дальше, давайте повнимательнее рассмотрим два последних шага. Объявление переменных UserID и ACL c ключевым словом Global позволяет обратиться к ним из любой процедуры или модуля данного приложения. Поскольку функция InitApp находится внутри модуля и сопровождается ключевым словом Public, она является глобальной и может быть вызвана из любой процедуры приложения. В ней происходит инициализация приложения — переменной UserID присваивается значение " Джо", а переменной ACL — 255. Теперь давайте создадим форму для регистрации пользователя: 1. Дважды щелкните на форме Form1 в окне проекта, чтобы активизировать ее в конструкторе форм. 2. В окне свойств задайте свойству Name формы Form1 значение frmLogon, а свойству Caption — значение Регистрация пользователя. 3. Создайте на форме надпись. Задайте свойству Name значение lblUserID, а свойству Caption — Имя пользователя:. 4. Создайте под lblUserID еще одну надпись, задайте свойству Name значение lblPassword, а свойству Caption — значение Пароль:. 5. Добавьте текстовое поле справа от первой надписи и задайте его свойству Name значение txtUserID. 6. Добавьте текстовое поле справа от второй надписи. В окне свойств задайте его свойству Name значение txtPassword, а свойству PasswordChar — символ «звездочка» (*). 7. Разместите кнопку в середине нижней части формы. Задайте ее свойству Name значение cmdLogon, а свойству Caption — значение & Регистрация. После того как на форме появятся все перечисленные элементы, она должна выглядеть примерно так, как показано на рис. 7.7.
Рис. 7. 7. Форма для регистрации пользователей
8. Откройте окно программы двойным щелчком на форме Form1. 9. Расположите курсор слева от строки Option Explicit секции (General)(Decla-rations) формы Form1. 10. Дважды нажмите на клавишу Enter, чтобы вставить перед Option Explicit две пустые строки. 11. Введите следующую строку над Орtion Explicit:
Private Password As String
12. Откройте процедуру события Load формы и добавьте следующий фрагмент:
Private Sub Form_Load() InitApp txtUderID.Text = UserID txtPassword.Text = " " End Sub
13. В окне программы откройте процедуру события Click кнопки cmdLogon и добавьте в нее следующий фрагмент:
Private Sub cmdLogon_Click() Dim msg As String UsertID = txtUser.Text Password = txtPassword.Text
msg = " Имя пользователя: " & UserID & Chr$(13) msg = msg & " Пароль: " & Password & Chr$(13) msg = msg & " ACL: " & Str$(ACL) End Sub
14. Запустите программу командой Run > Start. Обратите внимание на то, что в поле Имя пользователя содержится имя «Джо». Это значение было взято из глобальной строковой переменной с именем UserID. Переменная не объявляется в процедуре события Form_Load, она объявлена глобальной в модуле Module1. Переменная для хранения пароля также заслуживает внимания. Она была объявлена в секции (General)(Declarations) формы. Обращаться к ней могут только функции данной формы. Это важно, потому что остальная часть программы не имеет права изменять пароль пользователя. Говорят, что переменная пароля доступна лишь в модуле формы. Введите любой текст в поле Пароль: и нажмите кнопку Регистрация. Процедура события Click использует переменные модуля и глобальные переменные для отображения информации о пользователе.
|