Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Builder и Office

76K
11 ноября 2011 года
sergo555
3 / / 11.11.2011
Привет всем. На других форумах мне не смогли помочь. Может тут смогут?
Нужно в шаблон WORD, используя OPENOFFICE, вставить изображение и установить его размеры. Среда разработки – Builder.
Вот код. Почему не устанавливается размер изображения?
Код:
Variant App, Desktop, OpenParams, DocWord, ServiceManager, Dispatcher, CurrentController, Frame;
    //Открываем OPENOFFICE
    App = Variant::CreateObject("com.sun.star.ServiceManager");
    Desktop = App.OleFunction("createInstance", "com.sun.star.frame.Desktop");
    int Bounds2[2] = {0,0};
    OpenParams = VarArrayCreate(Bounds2, 1, varVariant);
    Variant MyStruct = App.OleFunction("Bridge_GetStruct","com.sun.star.beans.PropertyValue");
    MyStruct.OlePropertySet("name","Hidden");
    MyStruct.OlePropertySet("value", false);
    OpenParams.PutElement(MyStruct, 0);
    //Открытие файла
    DocWord = Desktop.OleFunction("LoadComponentFromURL", "file:///C:/Shablon.doc", "_blank", 0, OpenParams);
    //Вставляем картику
    ServiceManager = Variant::CreateObject("com.sun.star.ServiceManager");
    //параметры
    Variant MyStruct1 = ServiceManager.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
    MyStruct1.OlePropertySet("name","FileName");
    MyStruct1.OlePropertySet("value","file:///C:/1.JPG");
    Variant MyStruct2 = ServiceManager.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
    MyStruct2.OlePropertySet("name","AnchorType");
    MyStruct2.OlePropertySet("value","com.sun.star.text.TextContentAnchorType.AS_CHARACTER");
    Variant MyStruct3 = ServiceManager.OleFunction("Bridge_GetStruct", "com.sun.star.beans.PropertyValue");
    MyStruct3.OlePropertySet("name","Width");
    MyStruct3.OlePropertySet("value", 25);
    int Bounds[2] = {0,2};
    Variant VariantArray = VarArrayCreate(Bounds, 1, varVariant);
    VariantArray.PutElement(MyStruct1, 0);
    VariantArray.PutElement(MyStruct2, 1);
    VariantArray.PutElement(MyStruct3, 2);
    Dispatcher= ServiceManager.OleFunction("createInstance", "com.sun.star.frame.DispatchHelper");
    CurrentController = DocWord.OleFunction("getCurrentController");
    Frame = CurrentController.OleFunction("getFrame");
    Dispatcher.OleFunction("executeDispatch",Frame,".uno:InsertGraphic","",0, VariantArray);

Как установить размер изображения?
14
12 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
А проверка на ошибки имеется?
76K
12 ноября 2011 года
sergo555
3 / / 11.11.2011
Все компилируется без ошибок.программа запускается. Шаблон открывается и даже изображение вставляется. Но оно не того размера. Подозреваю, что неправильное название свойств в этой строке:
Цитата:

MyStruct3.OlePropertySet("name","Width");
MyStruct3.OlePropertySet("value", 25);

14
12 ноября 2011 года
Phodopus
3.3K / / 19.06.2008
ну так и где проверка на ошибки в этих строках?
76K
12 ноября 2011 года
sergo555
3 / / 11.11.2011
Извини, не понял вопроса. Свойство Width существует, может просто это не размер картинки, а что-то другое? Пытался макрос записать, но макрос такие параметры не показывает (или я криво что-то делаю :) )
Есть код из книжки, но не получилось его перевести в Builder
Код:
Sub InsertGraphicObject(oDoc, sURL$)
REM Author: Andrew Pitonyak
Dim oCursor
Dim oGraph
Dim oText
oText = oDoc.getText()
oCursor = oText.createTextCursor()
oCursor.goToStart(FALSE)
oGraph = oDoc.createInstance("com.sun.star.text.GraphicObject")
With oGraph
.GraphicURL = sURL
.AnchorType = com.sun.star.text.TextContentAnchorType.AS_CHARACTER
.Width = 6000
.Height = 8000
End With
' теперь вставляем изображение в текстовый документ
oText.insertTextContent( oCursor, oGraph, False )
End Sub
76K
14 ноября 2011 года
Elefanov
5 / / 11.11.2011
Вообще какое-то интересное обращение
MyStruct3.OlePropertySet("name","Width");
MyStruct3.OlePropertySet("value", 25);

С OpenOffice не знаю, но в MS Word должно что-то быть вроде

MyStruct3.OlePropertySet("Width",25);

Да и еще, код в try-catch обернут? Может какое исключение будет вылазить?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог