Страница: 1 |
Братья программеры как реализовать в контроле свойство-массив Заранее благодарен
Простейший вариант: Public PropertyName() as Type Подставляешь свои имя и тип. To universal: Некатит - при компиляции Васик матюкаеться 'Ничего путного в голову не приходит, но есть такой вариант. 'Предупреждаю сразу: это только заготовка Лень было дальше писать 'Для перемещения\добавления элементов можно использовать 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 Спасибо конечно, но чуть-чуть не то. Короче, объясню по-подробнее: Пользователь присваивает свойству контрола массив картинок и мой компонент обрабатывает этот массив Если массив данных - Variant Если массив объектов (ссылок) - Collection Обещал перенести сюда... Так вот. Передача массива: 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(). Страница: 1 |
Вопрос: Свойство-массив
Добавлено: 23.07.03 11:25
Автор вопроса: ZeroX | ICQ: 220401330
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Calhoon
ICQ: 789764
Вопросов: 90
Ответов: 230
Web-сайт:
Профиль | | #1
Добавлено: 23.07.03 13:50
В каком контроле, где? Можно поподробнее?
Номер ответа: 2
Автор ответа:
univercal
ICQ: 173084484
Вопросов: 5
Ответов: 76
Web-сайт:
Профиль | | #2
Добавлено: 23.07.03 14:21
Номер ответа: 3
Автор ответа:
ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #3
Добавлено: 23.07.03 14:35
Номер ответа: 4
Автор ответа:
univercal
ICQ: 173084484
Вопросов: 5
Ответов: 76
Web-сайт:
Профиль | | #4
Добавлено: 23.07.03 17:08
Номер ответа: 5
Автор ответа:
ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #5
Добавлено: 23.07.03 17:14
Номер ответа: 6
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #6
Добавлено: 24.07.03 05:11
Номер ответа: 7
Автор ответа:
univercal
ICQ: 173084484
Вопросов: 5
Ответов: 76
Web-сайт:
Профиль | | #7
Добавлено: 24.07.03 11:28
Номер ответа: 8
Автор ответа:
ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #8
Добавлено: 24.07.03 13:00
Спасибо, но я вчера ночью все уже сделал (алгоритм подобен твоему)