Гость_Eugene |
Отправлено: 22.08.2003, 13:35 |
|
Не зарегистрирован
|
У меня возникли проблемы с написанием контроллера, который должен работать с документами и возможностями Mathcad`а.
У меня стоит Mathcad2001 Professional , С++ Builder 5.0 (Build 12.34),Win2000 5.00.2195 SP2.
При создании объекта Mathcad:
CODE | Variant mcad = Variant::CreateObject("Mathcad");
| mcad содержит интерфейc IMathCad.
Используя метод OlePropertyGet можно получить интерфейс IMathcadApplication через свойства "Parent" и "Application"
CODE | Variant appl = mcad.OlePropertyGet("Parent");
|
Через интерфейс IMathcadApplication (appl) окно приложения Mathcad можно сделать выдимым, изменять его размеры и все.
CODE | appl.OlePropertySet("Visible",(Variant)true);
appl.OlePropertySet("Height",(Variant)50);
| Открыть какой-либо фаил никак не могу.
Мне кажется, что надо получить интерфейс IMathcadDocuments, у которого есть методы Add, Open и др.
Его можно получить через свойство "Documents" интерфейса IMathcadApplication,
CODE | Variant docs = appl.OlePropertyGet("Documents");
| но это вызывает ошибку EOleSysError "Ошибка".
Использование компоненты OleContainer вообще ничего не дает. Я вставляю в него файл от Mathcad. При попытке доступа через интерфейсы, получаемые с помощью методов OleContainer1->OleObjectInterface и OleContainer1->StorageInterface, к какому-либо свойству или методу вызавается сообщение "_ASSERTE:" ""IsBound() @....utiicls.h / 4119 .... " и ошибка.
Вопросы:
Как открыть какой-нибудь файл, если не используется OleContainer?
Как правильно использовать OleContainer?
Где можно взять какое-нибудь описание работы с OLE сервером Mathcad`а?
Что я делаю не так? |
|
Георгий |
Отправлено: 22.08.2003, 21:31 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
c OLE я плохо знаком, но говорят, что BCB 6 работает с OLE куда лучше, чем пятый — попробуй BCB 6 — может поможет |
|
|