Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
константы и пречисления.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
227.33 Кб
Скачать
  1. Переменные диалога (реквизиты формы)

Переменные модуля и локальные переменные его программных компонентов объявлялись и определялись, то есть получали значения, в самом модуле. Переменные модуля доступны во всех его программных компонентах, локальные - только в том компоненте, где они были объявлены явно или неявно, появившись в левой части оператора присваивания.

Кроме переменных модуля и локальных переменных, в модуле можно объявлять - переменные диалога, которые объявляются в диалоге как идентификаторы его элементов. Область действия переменных диалога распространяется на все программные компоненты модуля, то есть они имеют такой же статус, как и переменные модуля.

У переменных диалога есть другие названия - реквизиты формы и идентификаторы элементов диалога.

Например:

В диалоге форма, создадим форму (рисунок 2)

Рисунок 2. Диалог с числовым полем

Напишем в модуле созданной формы код, меняющий значения переменной диалога дЧ.

перем а; // Переменная модуля

процедура Выполнить() // Связана с кнопкой Пуск

// Встроенное процедура Предупреждение выводит текст

Предупреждение("3начение числового поля будет увеличено в 2 раза.");

дЧ = дЧ * а; // Изменяем значение переменной диалога дЧ

конецПроцедуры // Выполнить

процедура ПриОткрытии() //Предопределенная процедура, выполняется при открытии диалога

ОчиститьОкноСообщений(); // Очищаем окно сообщений

а = 2.0; // Начальное значение переменной модуля а

дЧ = 5.23; // Начальное значение переменной диалога дЧ

конецПроцедуры // ПриОткрытии

Результат выполнения:

а б

Рис. 1.24. Поле дЧ диалога:

а - после открытия диалога; б - после двукратного нажатия на кнопку Пуск

Переменная диалога дЧ станет недоступной во всех программных компонентах модуля, если в модуле обработки объявить переменную модуля дЧ.

Например:

перем а; // Переменная модуля

перем дЧ; // Переменная модуля дЧ, переменная диалога дЧ станет недоступной

процедура Выполнить() // Связана с кнопкой Пуск обработки Проба

// Встроенное процедура Предупреждение выводит текст,

// переданный процедуре в качестве параметра, в окно с кнопкой ОК

Предупреждение("3начение числового поля будет увеличено в 2 раза.");

дЧ = дЧ * а; // Результат после загрузки и двух нажатий

конецПроцедуры // на кнопку Пуск см. на рис. 1.24

процедура ПриОткрытии()

ОчиститьОкноСообщений(); // Очищаем окно сообщений

а = 2.0; // Начальное значение переменной модуля а

дЧ = 5.23; // Начальное значение переменной диалога дЧ

конецПроцедуры // ПриОткрытии

Если же такое объявление сделать в каком-нибудь программном компоненте модуля, например в процедуре Выполнить, то переменная диалога дЧ станет недоступной в этом программном компоненте. В таких случаях говорят: "Локальная переменная закрывает глобальную переменную". Таким же образом можно закрыть в процедуре или функции модуля его любую переменную. Каких-либо предупреждений о закрытии переменных компилятором не выдается.

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