Проблема доступа к Default Property в VB6sp6
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Проблема доступа к Default Property в VB6sp6 Expand / Collapse
Автор
Сообщение
28.02.2007 10:32
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 28.02.2007 11:47
Сообщ.: 1, Visits: 4
Пусть имеется класс (например, 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

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

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

Кто-нибудь может подсказать способ решения данной проблемы?

Сообщ. #911134
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Comanche, Alexey Spirin

Время GMT +3:00, Сейчас 5:58