Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема доступа к Default Property в VB6

26K
27 февраля 2007 года
uncle_gm
1 / / 27.02.2007
Пусть имеется класс (например, ArrayClass), полем которого является массив:


Private mArr(24, 24) As Boolean

Public Property Get Arr(x As Byte, y As Byte) As Variant
Arr = mArr(x, y)
End Property

Public Property Let Arr(x As Byte, y As Byte, ByVal vNewValue As Variant)
Let mArr(x, y) = vNewValue
End Property

Причем, свойство Arr - Default Property

Тогда код,типа :

Dim tmp As New ArrayClass

tmp(0, 0) = True
tmp(1, 1) = True

Debug.Print "tmp(0, 0) =" & tmp(0, 0)
Debug.Print "tmp(1, 1) =" & tmp(1, 1)

работает без проблем. Т.е. без проблем производится присвоение и чтение элементов массива посредством Default Property - Arr.

Если же мы включаем ArrayClass в качестве поля данных в другой класс, например(ContClass):

Public mArrayClass As New ArrayClass

то попытка присвоения, типа:

Dim tmp As New ContClass

tmp.mArrayClass(0, 0) = True

вызывает ошибку времени во время исполнения "Wrong number of arguments or invalid property assignment".

Хотя чтение происходит без проблем:

debug.print "tmp.mArrayClass(0, 0)=" & tmp.mArrayClass(0, 0)

Проблема решается путем явного указания свойства:

tmp.mArrayClass.Arr(0, 0) = True

Но код при этом теряеи свою читабельность.

Это особенно заметно при большем уровне вложенности классов.

Кто-нибудь может подсказать способ решения данной проблемы?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог