Visual Basic 6. Руководство разработчика

Перечислимые свойства


Если переключиться на тестовую форму и поэкспериментировать с элементом управления, то можно заметить, что он ведет себя не совсем так, как обычный элемент управления. Специальные свойства в окне свойств элемента управления могут быть установлены в любое значение Необходимо добавить код, который бы отображал только допустимые значения свойств Effect и TextAlignment и, таким образом, ограничивал выбор пользователя только допустимыми значениями. На рис. 16.6 пока­зано окно свойств элемента упоавления. в котором выбрано свойство TextAlignment.

Рис. 16.6. Некоторые специальные свойства должны иметь ограниченное число значений, которые отображаются в раскрывающемся списке

Тип данных, который содержит малое число значений, называется Enumerated (перечислимым) типом. Integer, Double и другие числовые типы данных являются базовыми и могут представлять числовые значения. Если приложение использует переменную, которая может принимать только ограниченное число целочисленных значений, можно использовать перечислимый тип. Свойство TextAlignment как раз и является такой переменной, поскольку может принимать только одно из нескольких целочисленных значений. Дни недели, например, или месяцы года также являются примерами данных перечислимого типа. Для того чтобы создать перечислимый тип, сначала необходимо объявить значения перечислимого типа. Таким образом VB узнает, какие из значений являются допустимыми. Вставьте следующее объявление перечислимого типа в начало кода сразу после оператора Option Explicit:

Enum Align

[Top Left]

[Top Middle]

[Top Right]

[Center Left]

[Center Middle]

[Center Right]

[Bottom Left]

[Bottom Middle]



[Bottom Right]

End Enum

Это объявление сообщает Visual Basic, что любая переменная, объявленная как Align,

может иметь значения от 0 до 8 (перечислимые значения соответствуют числам, начинающимся с 0). Строки в объявлении типа являются синонимами соответствующих числовых значений, которые будут отображаться в окне свойств. Квадратные скобки в объявлении необходимы только в том случае, если соответст­вующие строки содержат пробелы (или другие недопустимые символы).


Теперь необходимо заменить тип свойства TextAlignment с Integer на Align (этот перечислимый тип мы только что объявили), так как тип свойства TextAlignment должен быть именно перечислимым. Откройте проект FLEXLabel и выполните следующие изменения:

1. Выберите объект UserControl, откройте окно с его кодом и в начале кода вставьте следующее определение типов:

Enum Align

[Top Left]

[Тор Middle]

[Top Right]

[Center Left]

[Center Middle]

[Center Right]

[Bottom Left]

[Bottom Middle]

[Bottom Right]

End Enum

2. Измените определения процедур Property Let и Property Get свойства TextAlignment таким образом, чтобы они имели тип Align (вместо Integer). Сделать это можно следующим образом:

Public Property Get TextAlignment() As Align

TextAlignment = m_TextAlignment

End Property

Public Property Let TextAlignment (ByVal New_TextAlignment _

As Align)

M_TextAlignment = New_TextAlignment

PropertyChanged "TextAlignment"

End Property

Обратите внимание, что код проверки допустимости значений в процедуре Property Let более не нужен, поскольку пользователь не может выбрать недопустимое значение для этого свойства в окне свойств. Если попытаться связать недопус­тимое значение со свойством непосредственно в коде, то такая команда будет проигнорирована без каких либо предупреждений или сообщении об ошибке Значение свойства просто не изменится. Попытка присвоить перечислимой пере­менной недопустимое значение посредством кода приведет к сообщению об ошибке во время выполнения программы.


Содержание раздела