06.11.2007, 15:30 | #12 |
Участник
|
Это делается так:
X++: static void oo_4(Args _args) { COM OpenOffice; COM DeskTop; COM Document; COM MyStruct; str filepath; // аргумент для вызова методов через диспатч COMVariant varArg1 = new COMVariant(); // аргумент для массива свойств COMVariant var = new COMVariant(); // Это для того, чтобы вызывать диспатчевые методы // а конкретно - аксапта часто не умеет ставить значения пропертям // и приходится вот так. ComDispFunction Func; // аргумент для всяких методов COMVariant arg; // иногда нужен массив свойств Array arr = new Array(Types::Class); // Создание экземпляра OpenOffice.org OpenOffice = new Com("com.sun.star.ServiceManager"); DeskTop = OpenOffice.CreateInstance("com.sun.star.frame.Desktop"); // получаем объект, в котором хранится свойство (для передачи в функцию) MyStruct = OpenOffice.Bridge_GetStruct("com.sun.star.beans.PropertyValue"); Func = new COMDispFunction(MyStruct, "Name", COMDispContext::PropertyPut); varArg1.bStr("AsTemplate"); Func.call(varArg1); Func = new COMDispFunction(MyStruct, "Value", COMDispContext::PropertyPut); varArg1.boolean(true); Func.call(varArg1); var = COMVariant::createFromCOM(MyStruct); arr.value(1,var); // Создание документа // create and initialize a COMVariant object arg = COMVariant::createFromArray(arr); filepath = "file://///Axapta-aos/Шаблоны/Претензии.xlt"; Document = DeskTop.LoadComponentFromURL(filepath, "_blank", 0, arg); } |
|
|
За это сообщение автора поблагодарили: NeveB (1), Lucky13 (2). |