Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Свойство-массив Добавлено: 23.07.03 11:25  

Автор вопроса:  ZeroX | ICQ: 220401330 

Братья программеры как реализовать в контроле свойство-массив

Заранее благодарен

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 Calhoon



ICQ: 789764 

Вопросов: 90
Ответов: 230
 Web-сайт: 4elovekssn.blog.ru
 Профиль | | #1
Добавлено: 23.07.03 13:50
В каком контроле, где? Можно поподробнее?

Ответить

Номер ответа: 2
Автор ответа:
 univercal



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #2
Добавлено: 23.07.03 14:21

Простейший вариант:

Public PropertyName() as Type

Подставляешь свои имя и тип.

Ответить

Номер ответа: 3
Автор ответа:
 ZeroX



ICQ: 220401330 

Вопросов: 47
Ответов: 406
 Профиль | | #3 Добавлено: 23.07.03 14:35

To universal:

Некатит - при компиляции Васик матюкаеться

Ответить

Номер ответа: 4
Автор ответа:
 univercal



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #4
Добавлено: 23.07.03 17:08

'Ничего путного в голову не приходит, но есть такой вариант.

'Предупреждаю сразу: это только заготовка :) Лень было дальше писать

'Для перемещения\добавления элементов можно использовать API для копирования памяти

Private DataUBound As Long

Private Data() As String

Public Function Count() As Long

Count = DataUBound + 1

End Function

Public Function Item(Index) As String

Item = Data(Index)

End Function

Public Sub SetItem(Index, Value)

Data(Item) = Value

End Sub

Public Sub AddItem(Value)

DataUBound = DataUBound + 1

ReDim Preserve Data(DataUBound)

Data(DataUBound) = Value

End Sub

Public Sub KillLastItem()

On Error Resume Next

'Если попытаться удалить все записи, то ReDim(-1) вызовет ошибку

'Но значение Count станет 0, т.е. мы как бы удалили запись

DataUBound = DataUBound - 1

ReDim Preserve Data(DataUBound)

End Sub

Private Sub UserControl_Initialize()

DataUBound = -1

End Sub

Ответить

Номер ответа: 5
Автор ответа:
 ZeroX



ICQ: 220401330 

Вопросов: 47
Ответов: 406
 Профиль | | #5 Добавлено: 23.07.03 17:14

Спасибо конечно, но чуть-чуть не то.

Короче, объясню по-подробнее: Пользователь присваивает свойству контрола массив картинок и мой компонент обрабатывает этот массив

Ответить

Номер ответа: 6
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #6 Добавлено: 24.07.03 05:11

Если массив данных - Variant

Если массив объектов (ссылок) - Collection

Ответить

Номер ответа: 7
Автор ответа:
 univercal



ICQ: 173084484 

Вопросов: 5
Ответов: 76
 Web-сайт: univercal-s.narod.ru
 Профиль | | #7
Добавлено: 24.07.03 11:28

Обещал перенести сюда... Так вот.

Передача массива:

Private LocalData() as IPictureDisp

'...

Public Sub SendData(ByRef Data() as IPictureDisp)

LocalData() = Data()

'< см. ниже >

End Sub

Возврат значений - куча вариантов, наиболее удобны, по-моему, два:

1. По внешнему запросу:

Public Sub GetData(ByRef Data() as IPictureDisp)

Data() = LocalData()

End Sub

2. Через события. В области определения:

Event RequestDone(ByRef Data() as IPictureDisp)

В функции SendData, после того, как работа завершена:

RaiseEvent RequestDone(LocalData())

P.S. Во втором случае переносить массив на локальную переменную LocalData() не имеет смысла. Исключение составляет вариант, когда массив может быть передан через событие и одновременно может быть запрошен процедурой GetData().

Ответить

Номер ответа: 8
Автор ответа:
 ZeroX



ICQ: 220401330 

Вопросов: 47
Ответов: 406
 Профиль | | #8 Добавлено: 24.07.03 13:00
Спасибо, но я вчера ночью все уже сделал (алгоритм подобен твоему)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам