|
17.06.2010, 16:02 | #1 |
Участник
|
OpenOffice (автофигуры)
Доброго времени суток, всем знатокам и гуру Аксапты!
Продолжение темы OpenOffice (Sheet orientation, cell format). Возникла задача - добавить автофигуру. Записал макрос: Код: sub Macro1 rem ---------------------------------------------------------------------- rem define variables dim document as object dim dispatcher as object rem ---------------------------------------------------------------------- rem get access to the document document = ThisComponent.CurrentController.Frame dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") rem ---------------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "InsertDraw" args1(0).Value = 2 dispatcher.executeDispatch(document, ".uno:InsertDraw", "", 0, args1()) end sub X++: void addShape() { ComDispFunction func; COMVariant varArg = new COMVariant(); COMVariant var = new COMVariant(); COMVariant arg; Array arr = new Array(Types::Class); COM CreateUnoService; COM oParam; ; oParam=OpenOffice.bridge_GetStruct('com.sun.star.beans.PropertyValue'); Func = new COMDispFunction(oParam, "Name", COMDispContext::PropertyPut); varArg.bStr("InsertDraw"); Func.call(varArg); Func = new COMDispFunction(oParam, "Value", COMDispContext::PropertyPut); varArg.int(2); Func.call(varArg); CreateUnoService = OpenOffice.createInstance("com.sun.star.frame.DispatchHelper"); var = COMVariant::createFromCOM(oParam); arr.value(1,var); arg = COMVariant::createFromArray(arr); CreateUnoService.executeDispatch(oDocument,".uno:InsertDraw","",0,arg); } Цитата:
Метод "executeDispatch" в COM-объекте класса "<неизвестно>" возвратил код ошибки 0x80020005 (DISP_E_TYPEMISMATCH), который означает: Один или большее количество аргументов не мог быть преобразовано.
Помогите, люди добрые..
__________________
..в каждой программе есть хотя бы одна ошибка.. Последний раз редактировалось Alexanderrrr; 17.06.2010 в 16:20. |
|
|
За это сообщение автора поблагодарили: x-act (0). |
01.07.2010, 10:58 | #2 |
Участник
|
Копал не в том направлении.
Привожу работающий код для добавления прямоугольника в OpenOffice: X++: COM oRange; COM oSheets; COM oSheet; COM oShape; COM oSize; COM oPos; COM oPage; ComDispFunction func; COMVariant varArg1 = new COMVariant(); ; //что такое oDocument можно посмотреть в предыдущей теме про опенофис oSheets = oDocument.getSheets(); oSheet = oSheets.getByIndex(0); oPage = osheet.getDrawPage(); oShape = oDocument.createInstance('com.sun.star.drawing.RectangleShape'); //зададим размеры прямоугольника oSize = oDocument.Bridge_GetStruct('com.sun.star.awt.Size'); func = new COMDispFunction(oSize, "width", COMDispContext::PropertyPut); varArg1.int(1000); func.call(varArg1); func = new COMDispFunction(oSize, "height", COMDispContext::PropertyPut); varArg1.int(1000); func.call(varArg1); oShape.setSize(oSize); //зададим позицию прямоугольника oPos = oDocument.Bridge_GetStruct('com.sun.star.awt.Point'); func = new COMDispFunction(oPos, "x", COMDispContext::PropertyPut); varArg1.int(100); func.call(varArg1); func = new COMDispFunction(oPos, "y", COMDispContext::PropertyPut); varArg1.int(100); func.call(varArg1); oShape.setPosition(oPos); oPage.add(oShape);
__________________
..в каждой программе есть хотя бы одна ошибка.. |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Как открыть шаблон в OpenOffice? | 28 | |||
DeniZone: OpenOffice and Dynamics ax | 0 | |||
OpenOffice форматирование | 8 | |||
Ищу класс для работы с OpenOffice | 9 | |||
Axapta+OpenOffice | 3 |
|