Здравствуйте. При разработке библиотеки на C# в среде MS Visual Studio 2010 для Terrasoft CRM импортировал библиотеку Terrasoft Window Library в мой проект. Однако часть методов оказалась недоступной, к примеру Метод IWindow::ComponentsByName. Попытка импортировать её под MS Visual Studio 2005 так же окончилась безуспешно. В чём может быть причина?

Нравится

12 комментариев

Попробуйте импортировать TSDskWindowLibrary.

"Лабьяк Олег Игоревич" написал:Попробуйте импортировать TSDskWindowLibrary

Пробовал, ни к чему не привело.

Можете привести примеры или выложить Ваш проект для анализа?

"Лабьяк Олег Игоревич" написал:Можете привести примеры или выложить Ваш проект для анализа?

Выкладываю класс, в котором и происходит ошибка. ServiceUtils - мой класс для выполнения стандартных операций с сервисами.

Проект целиком. Будет понятнее. Класс GridWindow.cs В необходимом месте закомментировано.

Пока весь проект не смотрел, но в Object Browser'e этот метод вижу:

Использую MS Visual Studio 2008, версия 9.0.21022.8 RTM.

Сейчас посмотрю проект.

У Вас ComponentsByName опеределился как свойство. Должен же быть методом

Почему же? Если посмотреть на объявление в SDK, это именно свойство, которое получает элемент коллекции по его коду (обратите внимание на propget):

[id(00000000), propget]
HRESULT ComponentsByName(
    [in] BSTR Name, 
    [out, retval] IWindowComponent** Value
);

Кстати, если использовать MS Visual Studio (не ниже 2008) в качестве отладчика, ComponentsByName у любого окна тоже отображается в списке свойств, а не методов.

Тогда подскажите, пожалуйста, как в моём случае получить доступ к grdData окна. Окно было унаследовано от wnd_BaseGridArea.

Странно, я как-то никогда не встречал чтобы для метода с атрибутом [propget], который должен трактоваться как свойство было объявлено два параметра с разными типами и атрибутами [in] и [out, retval]:

    [in] BSTR Name, 
    [out, retval] IWindowComponent** Value

Прокомментируйте, пожалуйста.

"razamanaz" написал:Тогда подскажите, пожалуйста, как в моём случае получить доступ к grdData окна. Окно было унаследовано от wnd_BaseGridArea.

Ваш вопрос передан на рассмотрение в департамент разработки продуктов нашей компании.

"Yauhen Ivashkevich" написал:Прокомментируйте, пожалуйста.

Посмотрите здесь, особенно Remarks - там подробный ответ на Ваш вопрос.

Попробуйте обращаться к компонентам через метод get_CoreItemsByKey, например:

TSWindowLibrary.IWindow.NonVisualComponents.get_CoreItemsByKey('dlData')
Показать все комментарии