Переменные диалога (реквизиты формы)
Переменные модуля и локальные переменные его программных компонентов объявлялись и определялись, то есть получали значения, в самом модуле. Переменные модуля доступны во всех его программных компонентах, локальные - только в том компоненте, где они были объявлены явно или неявно, появившись в левой части оператора присваивания. Кроме переменных модуля и локальных переменных, в модуле можно объявлять - переменные диалога, которые объявляются в диалоге как идентификаторы его элементов. Область действия переменных диалога распространяется на все программные компоненты модуля, то есть они имеют такой же статус, как и переменные модуля. У переменных диалога есть другие названия - реквизиты формы и идентификаторы элементов диалога. Например: В диалоге форма, создадим форму см. рис. 1.20
Рис. 1.20. Диалог с числовым полем Напишем в модуле созданной формы код, меняющий значения переменной диалога дЧ.
перем а; // Переменная модуля
процедура Выполнить() // Связана с кнопкой Пуск // Встроенное процедура Предупреждение выводит текст Предупреждение("3начение числового поля будет увеличено в 2 раза."); дЧ = дЧ * а; // Изменяем значение переменной диалога дЧ конецПроцедуры // Выполнить
процедура ПриОткрытии() //Предопределенная процедура, выполняется при открытии диалога ОчиститьОкноСообщений(); // Очищаем окно сообщений а = 2.0; // Начальное значение переменной модуля а дЧ = 5.23; // Начальное значение переменной диалога дЧ конецПроцедуры // ПриОткрытии
Результат выполнения:
а б Рис. 1.24. Поле дЧ диалога: а - после открытия диалога; б - после двукратного нажатия на кнопку Пуск Переменная диалога дЧ станет недоступной во всех программных компонентах модуля, если в модуле обработки объявить переменную модуля дЧ. Например: перем а; // Переменная модуля перем дЧ; // Переменная модуля дЧ, переменная диалога дЧ станет недоступной
процедура Выполнить() // Связана с кнопкой Пуск обработки Проба // Встроенное процедура Предупреждение выводит текст, // переданный процедуре в качестве параметра, в окно с кнопкой ОК Предупреждение("3начение числового поля будет увеличено в 2 раза."); дЧ = дЧ * а; // Результат после загрузки и двух нажатий конецПроцедуры // на кнопку Пуск см. на рис. 1.24 процедура ПриОткрытии() ОчиститьОкноСообщений(); // Очищаем окно сообщений а = 2.0; // Начальное значение переменной модуля а дЧ = 5.23; // Начальное значение переменной диалога дЧ конецПроцедуры // ПриОткрытии Если же такое объявление сделать в каком-нибудь программном компоненте модуля, например в процедуре Выполнить, то переменная диалога дЧ станет недоступной в этом программном компоненте. В таких случаях говорят: "Локальная переменная закрывает глобальную переменную". Таким же образом можно закрыть в процедуре или функции модуля его любую переменную. Каких-либо предупреждений о закрытии переменных компилятором не выдается. Избежать непредвиденных закрытий переменных будет легче, если придумывать имена переменным, опираясь на некоторую систему, например начинать переменные диалога с буквы д или использовать так называемую венгерскую нотацию. В соответствии с ней имя объекта снабжается префиксом из строчных букв, указывающих его тип. Последующая часть имени раскрывает его смысл. Причем каждая часть имени, отражающая отдельный смысловой компонент, начинается с прописной буквы. Например, имя переменной сНазваниеПодразделения говорит нам не только о том, что в ней хранится, но и о том, что тип переменной является символьным.
|