Читайте также: |
|
Зоны видимости переменных
А теперь поговорим о важном средстве обеспечения удобства и надежности программирования на Visual Basic - о механизме задания зон видимости переменных, процедур и других элементов Visual Basic. В 17.2 мы уже сталкивались с этим механизмом, когда переменные, объявленные внутри процедуры, являлись локальными в процедуре, то есть невидимыми снаружи процедуры. Поэтому их нельзя было использовать в других процедурах модуля. Если вы подзабыли этот раздел, то сейчас перечтите.
Перечли? Хорошо. Для переменных в Visual Basic определены 3 зоны видимости:
Локальные переменные процедуры | Видны только внутри процедуры, в которой они объявлены | Объявляются оператором Dimвнутри процедуры | |
Локальные переменные модуля | Видны везде внутри модуля, в котором они объявлены. Из других модулей не видны | Объявляются оператором Dim или Privateв верхней части модуля, снаружи процедур | |
Глобальные (общедоступные) переменныепроекта | Видны отовсюду из всех модулей проекта | Объявляются оператором 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 зоны видимости:
Локальные процедуры модуля | Видны везде внутри модуля, в котором они объявлены. Из других модулей не видны | Объявляются оператором Private | |
Глобальные (общедоступные) процедурыпроекта | Видны из всех модулей проекта | Объявляются оператором Public |
Вот пример использования глобальной процедуры П2.
Окно кода формы 1:
Private Sub Command1_Click()
Form2.П2
End Sub
Окно кода формы 2:
Дата добавления: 2015-11-16; просмотров: 41 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Структура проекта. Окно Project Explorer. | | | Public Sub П2() |