Возможно ли свойство формы в виде массива?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Anatoliy
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 12.01.2005 (Ср) 18:13
Откуда: Kiev

Возможно ли свойство формы в виде массива?

Сообщение Anatoliy » 16.03.2006 (Чт) 13:34

Необходимо для формы создать свойство, представлюящее собой массив чисел.
Если одно число в виде свойства, работает:
Код: Выделить всё

Dim iTmp As Integer
Public Property Let Tmp(ByVal aTmp As Integer)
    iTmp = aTmp
End Property

А так не работает:
Код: Выделить всё

Dim iTmps() As Integer
Public Property Set Tmps(ByRef aTmps() As Integer)
    Set iTmps = aTmps
End Property

Пробовал и Let и Set.
Передавал параметр и как массив:
aTmps() As Integer,
и как Object:
aTmps() As Object
По ссылке и по значению (ByRef, ByVal).
Все одно ругательство:

Definitions of property procedures for the same property are inconsistent, or property procedure has an optional prarameter, aParamArray. or an invalid Set final parameter

Есть ли решение?
Спасибо
Anatoliy

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.03.2006 (Чт) 13:41

Ну, во-первых, можно использовать индексированную проперть (Public Property Get Tmp(ByVal Index As Long, aTmp As Integer)). А во-вторых, проперть может быть Variant и возвращать подтип массива. Еще что-то мне смутно вспоминается насчет Function Test()(), но уже не помню точно.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.03.2006 (Чт) 13:46

Код: Выделить всё
Option Explicit

Private mArr() As Long

Public Property Get Arr() As Long()
  Arr = mArr
End Property

Public Property Let Arr(a() As Long)
  mArr = a
End Property

Private Sub Form_Load()
  ReDim mArr(1 To 10)
  mArr(5) = 7
 
  MsgBox Me.Arr()(5)
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.03.2006 (Чт) 13:56

Точно, скобки после типа добавляются.
Lasciate ogni speranza, voi ch'entrate.

Anatoliy
Новичок
Новичок
 
Сообщения: 28
Зарегистрирован: 12.01.2005 (Ср) 18:13
Откуда: Kiev

Сообщение Anatoliy » 16.03.2006 (Чт) 14:08

ОК. Спасибо. Работает
Anatoliy


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: SemrushBot и гости: 114

    TopList  
cron