Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Public Sub П2()

Глава 16. Строки, файлы, обработка ошибок | Функция Shell | Глава 17. Функции. Параметры процедур и функций | Локальные переменные | Передача параметров по ссылке и по значению | Индукция. Рекурсия | Элемент управления CommonDialog | Панель инструментов Toolbar | Работа с несколькими формами | Структура проекта. Окно Project Explorer. |


Читайте также:
  1. Advertising vs. Public Relations
  2. Application to public display right
  3. Article 346. Threats or violence against a statesman or a public figure
  4. B Public finance
  5. B. Public finance
  6. B. PUBLICISTS STYLE
  7. BELARUSIAN REPUBLICAN YOUTH UNION

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

End Sub

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

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

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

  Локальные константы процедуры Видны только внутри процедуры, в которой они объявлены Объявляются оператором Constвнутри процедуры
  Локальные константы модуля Видны везде внутри модуля, в котором они объявлены. Из других модулей не видны Объявляются оператором Const в верхней части модуля, снаружи процедур
  Глобальные (общедоступные) константыпроекта Видны изо всех модулей проекта Объявляются оператором Public Constв верхней части модуля кода (и только в нем).

 

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

Public Enum tip

a

b

End Enum

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

Dim s As tip

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

 

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

Затенение

 

Переменные разных модулей или разных процедур вполне могут иметь одинаковые имена. Спрашивается, как Visual Basic определяет, какая из видимых одноименных переменных имеется в виду в каждом конкретном случае? Здесь вступает в действие эффект затенения: из нескольких одноименных переменных всегда имеется в виду более локальная переменная, то есть та, чья зона видимости меньше. То есть переменные, локальные в процедуре, имеют предпочтение перед переменными, локальными в модуле, а те - перед глобальными переменными. В этом есть глубокий смысл. Программист, объявляющий переменные в своей процедуре, может не заботиться о том, что где-то в модуле есть переменные с тем же именем. А программист, объявляющий переменные в своем модуле, может не заботиться о том, что переменные с тем же именем есть где-то в проекте.

Пример: Имеется проект из двух форм. Окно кода формы 1:

Public a As Integer

Private Sub Command1_Click()

Form2.Show

a = 1

End Sub

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

Public a As Integer

Private b As Integer

 

Private Sub Command1_Click()

a = 2

Debug.Print Form1.a 'Печатается 1

Debug.Print a 'Печатается 2

b = 3

Debug.Print b 'Печатается 3

End Sub

 

Private Sub Command2_Click()

Dim a As Integer

Dim b As Integer

a = 4

Debug.Print a 'Печатается 4

b = 5

Debug.Print b 'Печатается 5

End Sub

 

Все, что я сказал о зонах видимости и о затенении переменных, в той или иной степени относится и к константам, и к свойствам, и к процедурам, и к другим элементам Visual Basic. Я не буду вдаваться в подробности, но дам один совет, который позволит вам избежать путаницы и конфликтов: давайте разным элементам разные имена. Отсюда вытекает желательность давать элементам разной природы разные префиксы, о чем в следующем разделе.

Теперь несколько слов о пользе модуля кода. Удобство его в том, что он не является "хозяином". Глобальные переменные, константы, типы, процедуры, определенные в нем, являются всеобщим достоянием и могут употребляться в любых других модулях, не требуя указания "хозяина". Модуль кода и используется как вместилище таких глобальных элементов, нужных в других модулях.

 


Дата добавления: 2015-11-16; просмотров: 43 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Зоны видимости| Префиксы имен

mybiblioteka.su - 2015-2024 год. (0.011 сек.)