Как поменять предметы в коллекции VB6? - PullRequest
1 голос
/ 18 декабря 2009

Если у меня есть коллекция форм (myForms), и я хочу изменить положение двух форм в коллекции (например, пункты 3 и 4), я ожидаю, что следующий код будет работать:

Dim temp as Form
Set temp = myForms(3)
Set myForms(3) = myForms(4)
Set myForms(4) = temp

Но это не работает. Сбой в третьей строке с ошибкой «Свойство Controls доступно только для чтения». Если я изменю строку на:

myForms(3) = myForms(4)

Вместо этого я получаю ошибку несоответствия типов.

Ответы [ 2 ]

3 голосов
/ 19 декабря 2009

Если myForms - это стандартная коллекция: Dim myForms as New Collection (которая на самом деле отличается от коллекции элементов управления), и вы добавили формы, используя: myForms.Add frmOne, myForms.Add frmTwo и т. Д., То (да) вам необходимо использовать «Добавить и удалить» методы из-за способа, которым коллекция ссылается на добавленные объекты.
В противном случае интерпретация заключается в том, что вы действительно хотите заменить одну форму другой, и это недопустимо. Вы не можете сказать: Set frmOne = frmTwo, если это не переменные типа Form.
Зачем вам нужно менять порядок? Вы ссылаетесь на номера предметов где-нибудь? Будет ли полезным использование словаря для сбора форм и ссылки на них по ключу?
Извините, многое нужно учитывать при работе с формами и экземплярами форм. : -)
PS. Несоответствие типов происходит просто потому, что оба элемента являются объектами и должны быть «установлены».

2 голосов
/ 18 декабря 2009

Вы не можете на самом деле менять элементы в коллекции элементов управления в VB6. Вам необходимо использовать функции Add и Remove, связанные с каждой из них. Проверьте эту статью:

http://support.microsoft.com/kb/190670

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...