|
|
#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 subX++: 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). | |
|
|
#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 | |||
|