Страница: 1 |
Страница: 1 |
Вопрос: Работа с массивом объектов
Добавлено: 26.01.07 07:09
Автор вопроса: sasha
Пишу прогу на vb чтот типо рисования схем...
Есть массив объектов.
Добавление...
load объект(индекс) ' индек увеличивается
удоление объекта...
unload обект(индекс)
Как сделать что бы индекс ишел по порядку? т.е. если мы
после удоления добовляем объект то значении индекс продолжает идти с того же значения что и до удоления...
если мы удоляем объект с индексом меньше последнего то получается пустое место... в дальнейшем ссылка на которое вызывает ошибку...
если делать смещение и упорядочевание индексА объекта то выдается ошибка...."Не может назначить свойство, свойство только для чтения".
Подскажите пожалуйста, как подругому можно изменять индекс массива объектов?
For индекс = ИндексУдоленногоОбъекта + 1 To МаксимальныйИндекс
объект(индекс).Index = индекс - 1
Next индекс
Ответы
Всего ответов: 5
Номер ответа: 1
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #1
Добавлено: 26.01.07 09:29
Только unload
Совет, свяжи ссылки с индексами... если удаляешь индекс, соответственно изменяй ссылку
Номер ответа: 2
Автор ответа:
Сашок
ICQ: 387093431
Вопросов: 1
Ответов: 70
Профиль | | #2
Добавлено: 26.01.07 22:12
Знаешь, я вообще-то не совсем люблю массивы. Мне проще использовать коллекции.
В колекцию можно много чего "впихнуть" - т.е. переменные разного типа, даже и сами массивы.
Вот краткий пример:
Dim a As New Collection
Dim s As New FileSystemObject
Dim c(1) As Object
Set c(0) = s
Set c(1) = s
a.Add (c)
a.Add (c)
a.Add (c)
a.Remove (1)
Попробуй, и тебе понравится
Номер ответа: 3
Автор ответа:
Сашок
ICQ: 387093431
Вопросов: 1
Ответов: 70
Профиль | | #3
Добавлено: 26.01.07 22:14
Кроме того сразу решается проблема
Так что дерзай!
Номер ответа: 4
Автор ответа:
-АлександР-
Вопросов: 55
Ответов: 1008
Web-сайт:
Профиль | | #4
Добавлено: 26.01.07 23:28
да, коллекции рулят
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 27.01.07 01:31
Я бы сделал так, если выгружаем не последний, то на самом деле не выгружаем его, а делаем visible=false. Соответственно проверяем при добавлении на незанятые контролы... если находим где-то в середине с visible=false, то вместо загрузки контрола, делаем его просто видимый...