Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
8 Мб
Скачать
☆

6.4.Зоны видимости

Зоны видимости переменных

А теперь поговорим о важном средстве обеспечения удобства и надежности программирования на Visual Basic - о механизме задания зон видимости переменных, процедур и других элементов Visual Basic. В 4.2 мы уже сталкивались с этим механизмом, когда переменные, объявленные внутри процедуры, являлись локальными в процедуре, то есть невидимыми снаружи процедуры. Поэтому их нельзя было использовать в других процедурах модуля. Если вы подзабыли этот раздел, то сейчас перечтите.

Перечли? Хорошо. Для переменных в Visual Basic определены 3 зоны видимости:

1

Локальные переменные процедуры

Видны только внутри процедуры, в которой они объявлены

Объявляются оператором Dim внутри процедуры

2

Локальные переменные модуля

Видны везде внутри модуля, в котором они объявлены. Из других модулей не видны

Объявляются оператором Dim или Private в верхней части модуля, снаружи процедур

3

Глобальные (общедоступные) переменные проекта

Видны отовсюду из всех модулей проекта

Объявляются оператором Public в верхней части модуля, снаружи процедур

Как видите, первая зона - самая узкая, третья - самая широкая. Пример окна кода:

Public a As Integer 'Глобальная переменная

Private b As Integer 'Локальная переменная модуля

Private Sub Command1_Click()

Private c As Integer 'Локальная переменная процедуры

. . . . . . .

End Sub

С первыми двумя зонами видимости вы знакомы. С третьей зоной сейчас познакомимся. Вот как можно из одного модуля обращаться к глобальным переменным, объявленным в другом модуле. Пусть в нашем проекте созданы две формы: Form1 и Form2. Вот окно кода формы 1:

Public a As Integer

Private Sub Command1_Click()

Form2.Show

a = 10

End Sub

Оператор Public объявляет переменную a как глобальную (или общедоступную), видимую изо всех модулей. Щелкнув по кнопке формы 1, вы присваиваете переменной a значение 10.

Вот окно кода формы 2:

Private Sub Command1_Click()

Debug.Print Form1.a

End Sub

Щелкнув по кнопке формы 2, вы печатаете 10 - правильное значение переменной a.

Как видите, для того, чтобы обратиться к переменной, объявленной в другом модуле, необходимо указать хозяина переменной. Visual Basic привык, что у чужих элементов хозяин должен быть указан, если же хозяин не указан, значит элемент "свой". Попробуем вместо Debug.Print Form1.a написать просто Debug.Print a. Поскольку хозяин не указан, Visual Basic поймет, что переменная a "своя", то есть принадлежит форме 2. (Это ничего, что она не объявлена, Visual Basic все равно считает ее существующей.) А поскольку "своей" переменной a ничего не присвоено, то ничего и не будет напечатано. В пошаговом режиме вы увидите, что если в форме 1 значение a равно 10, то в форме 2 значение a равно Empty (a=Empty). По английски это значит "пусто", то есть переменной не было присвоено никакого значения.

Итак, если мы хотим, чтобы переменная была видна во всем проекте, мы объявляем ее оператором Public. Такая переменная называется глобальной. Если же мы хотим, чтобы переменная была видна только в своем модуле (была локальной в модуле), мы объявляем ее оператором Dim. Вместо оператора Dim принято использовать оператор Private. По действию они неотличимы, но английский смысл слова Private (частная собственность, вход запрещен) лучше подходит к случаю, поэтому программисты в основном используют его.

Зоны видимости процедур

Процедуры могут быть или глобальными или локальными

Для процедур в Visual Basic определены 2 зоны видимости:

1

Локальные процедуры модуля

Видны везде внутри модуля, в котором они объявлены. Из других модулей не видны

Объявляются оператором Private

2

Глобальные (общедоступные) процедуры проекта

Видны из всех модулей проекта

Объявляются оператором Public

Вот пример использования глобальной процедуры П2.

Окно кода формы 1:

Private Sub Command1_Click()

Form2.П2

End Sub

Окно кода формы 2:

Public Sub П2()

Debug.Print "Выполнилась процедура П2"

End Sub

Щелчком по кнопке формы 1 мы печатаем текст "Выполнилась процедура П2".

Зоны видимости констант и типов

Для констант в Visual Basic так же, как и для переменных, определены 3 зоны видимости:

1

Локальные константы процедуры

Видны только внутри процедуры, в которой они объявлены

Объявляются оператором Const внутри процедуры

2

Локальные константы модуля

Видны везде внутри модуля, в котором они объявлены. Из других модулей не видны

Объявляются оператором Const в верхней части модуля, снаружи процедур

3

Глобальные (общедоступные) константы проекта

Видны изо всех модулей проекта

Объявляются оператором Public Const в верхней части модуля кода (и только в нем).

Перечислимые типы могут задаваться только на уровне модуля, а не процедуры. Слова Private и Public по отношению к ним имеют обычный смысл. Например, в окне кода формы 1 вы можете определить тип:

Public Enum tip

a

b

End Enum

Тогда в окне кода формы 2 вы можете объявить переменную:

Dim s As tip

Кстати, в определении перечислимого типа можно убрать слово Public. Visual Basic по умолчанию считает перечислимые типы глобальными.

Пользовательские типы тоже могут задаваться только на уровне модуля. Слова Private и Public по отношению к ним также имеют обычный смысл. Но не во всех модулях разрешено объявлять глобальные пользовательские типы.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]