VB 6 Как сделать пользовательский класс коллекции для поддержки каждого

Меня поместили в проект, клиентский интерфейс которого написан на VB 6, ага! Я пытаюсь разработать собственный класс коллекции, поддерживающий синтаксис For...Each. Возможно ли это в VB 6? Или я застрял с использованием счетчика For..Next для определения индекса.

Спасибо за помощь!


person Chris    schedule 12.04.2011    source источник
comment
что я могу сказать, нужно платить по ипотеке, я надеюсь, что разработчики VB6 станут редкостью, как те разработчики Cobol, тогда, когда M$ отключит среду выполнения VB 6, я буду там, чтобы заработать на всех миграциях в .net... если только я уже не пропустил эту лодку, черт возьми!   -  person Chris    schedule 12.04.2011


Ответы (1)


Ключевой частью является добавление этого в пользовательский класс коллекции...

Public Function NewEnum() As IUnknown
    Set NewEnum = m_Employees.[_NewEnum]
End Function

и в атрибутах процедуры установите идентификатор процедуры равным -4, например: введите здесь описание изображения

Ссылка: http://www.vb-helper.com/howto_custom_collection_with_for_each.html

person Justin Largey    schedule 12.04.2011
comment
Кажется неправильным голосовать за что-либо, связанное с VB6, но это очень хороший ответ. :-) - person Samuel Neff; 12.04.2011
comment
Я голосую за ваш комментарий, слишком смешно! Я знаю, что ты имеешь в виду, мне жаль Криса. - person Justin Largey; 12.04.2011
comment
Потому что в colldispid.h есть #define DISPID_NEWENUM (-4) вместе с #define DISPID_LISTITEM 0 и #define DISPID_LISTCOUNT (-531), но они не используются оператором For Each VB. - person wqw; 12.04.2011