Форум пользователей ПО АСКОН

Профессиональные вопросы => Программирование приложений => Тема начата: Akew от 03.12.15, 20:59:24

Название: Как получить все экземпляры вставок компонент
Отправлено: Akew от 03.12.15, 20:59:24
Добрый вечер!

Метод IPart7::InstanceCount(iPart7) возвращает количество вставок компоненты iPart7.
А как можно получить сами эти вставки (например, в виде массива *IPart7, VARIANT или как-нибудь иначе)?

Спасибо.
Название: Re: Как получить все экземпляры вставок компонент
Отправлено: Sabahs от 03.12.15, 23:41:06
PartsEx - Массив SAFEARRAY компонентов.
Название: Re: Как получить все экземпляры вставок компонент
Отправлено: Akew от 04.12.15, 06:26:25
ЦитироватьPartsEx - Массив SAFEARRAY компонентов
Насколько я понимаю, это свойство возвращает ВСЕ компоненты сборки (по выбору: только уникальные, или все-все, какие только есть в модели).
Однако, это не совсем то: мне нужны только экземпляры указываемого компонента.
Название: Re: Как получить все экземпляры вставок компонент
Отправлено: Sabahs от 04.12.15, 06:52:59
Так найдите в этом массиве, экземпляры данного компонента.
Название: Re: Как получить все экземпляры вставок компонент
Отправлено: Akew от 05.12.15, 10:22:35
Sabahs,
я реализовал поиск и отбор копий компонент по имени первого экземпляра.
В принципе, все работает, однако, остались сомнения в оптимальности этой реализации.

Отбор я провожу по имени компоненты. Поскольку у IPart7 нет свойства "Имя объекта", то, для его получения, пришлось его перевести в IFeature7 (для каждого элемента массива, полученного в PartsEx).

Не существует ли более короткого пути осуществить этот отбор? Т.е., может быть, нужно сравнивать не имена, а что-нибудь другое?

Спасибо.
Название: Re: Как получить все экземпляры вставок компонент
Отправлено: Akew от 11.12.15, 21:06:17
Sabahs,
я реализовал поиск и отбор копий компонент по имени первого экземпляра.
В принципе, все работает, однако, остались сомнения в оптимальности этой реализации.

Отбор я провожу по имени компоненты. Поскольку у IPart7 нет свойства "Имя объекта", то, для его получения, пришлось его перевести в IFeature7 (для каждого элемента массива, полученного в PartsEx).

Не существует ли более короткого пути осуществить этот отбор? Т.е., может быть, нужно сравнивать не имена, а что-нибудь другое?

Спасибо.
Название: Re: Как получить все экземпляры вставок компонент
Отправлено: Sabahs от 12.12.15, 09:25:25
Можно по имени файла искать.