AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2010, 14:58   #1  
Alexanderrrr is offline
Alexanderrrr
Участник
Аватар для Alexanderrrr
 
54 / 19 (1) ++
Регистрация: 06.03.2009
Адрес: Саратов
Долго бился с OO, конечно. В конце концов оказалось проще сделать выгрузку отчета на базе template (шаблона).

Вот пример создания экземпляра документа OO из шаблона:
X++:
void createdocument()
{
    COM MyStruct;
    COM oDeskTop;
    int i;
    COMVariant arg;
    COMVariant byte;
    Array arr = new Array(Types::Class);
    ComDispFunction Func;
    COMVariant varArg1 = new COMVariant();
    COMVariant var = new COMVariant();
    str filepath;
;
    //Создание экземпляра OpenOffice.org
    OpenOffice = new Com("com.sun.star.ServiceManager");
    oDeskTop = 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);

    // Создание документа
    arg = COMVariant::createFromArray(arr);
    filepath = "file://///path_to_template";
    oDocument = oDeskTop.LoadComponentFromURL(filepath, "_blank", 0, arg);
}
Обращение к листу:
X++:
    oSheets   = oDocument.getSheets();
    oSheet    = oSheets.getByIndex(0);
Вставка значения в ячейку:
X++:
oRange = oSheet.getCellByPosition(5,0);
oRange.Setstring("Пример");
Форматирование ячейки:
X++:
    #define.BOLD(150)
    #define.FONTNAME("Arial Cyr")
    #define.FONTHEIGHT(10)
;
oRange.setPropertyValue("CharWeight", #BOLD);
oRange.setPropertyValue("CharFontName", #FONTNAME);
oRange.setPropertyValue("CharHeight", #FONTHEIGHT);
oRange.setPropertyValue("HoriJustify",2);
Объединение ячейки:
X++:
oRange.merge(true);
Видимость столбца:
X++:
    oColumn = oSheet.getColumns();
    oColumn_new=oColumn.getByIndex(0);
    oColumn_new.setPropertyValue("IsVisible", False);
Ширина столбца:
X++:
    oColumn = oSheet.getColumns();
    oColumn_new=oColumn.getByIndex(0);
    oColumn_new.setPropertyValue("Width",2440);
Для установки границ ячейки применяю отдельный метод:
X++:
void SetBorder(COM range,boolean _left=true,boolean _right=true,boolean _top=true,boolean _bottom=true)
{
    COM MyStruct;
    ComDispFunction func;
    COMVariant varArg1 = new COMVariant();
;
    MyStruct = OpenOffice.Bridge_GetStruct("com.sun.star.table.BorderLine");

    func = new COMDispFunction(MyStruct, "OuterLineWidth",  COMDispContext::PropertyPut);
    varArg1.int(1);
    func.call(varArg1);

    func = new COMDispFunction(MyStruct, "InnerLineWidth",  COMDispContext::PropertyPut);
    varArg1.int(0);
    func.call(varArg1);

    func = new COMDispFunction(MyStruct, "LineDistance",  COMDispContext::PropertyPut);
    varArg1.int(0);
    func.call(varArg1);

    if (_top)
    range.SetPropertyValue('TopBorder', MyStruct);
    if (_left)
    range.SetPropertyValue('LeftBorder', MyStruct);
    if (_right)
    range.SetPropertyValue('RightBorder', MyStruct);
    if (_bottom)
    range.SetPropertyValue('BottomBorder', MyStruct);
}
Пример использования:
X++:
    oRange = oSheet.getCellRangeByName("A1:B1");
    this.SetBorder(oRange);
Для моих задач этого мне хватило. Такие вещи, как: ориентация листа, масштаб, поля..это все в template выставил..
Надеюсь это кому-то поможет..
__________________
..в каждой программе есть хотя бы одна ошибка..
За это сообщение автора поблагодарили: alexbn (1), lev (6), sable102 (1), CHESER85 (1).
Теги
openoffice

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как открыть шаблон в OpenOffice? PT DAX: Программирование 28 16.12.2010 06:13
DeniZone: OpenOffice and Dynamics ax Blog bot DAX Blogs 0 12.12.2008 13:05
OpenOffice форматирование PT DAX: Программирование 8 13.12.2007 15:54
dynamicsusers: The Style Sheet Tool for Microsoft Dynamics NAV Blog bot DAX Blogs 2 05.07.2007 05:51
Axapta+OpenOffice mmm DAX: Программирование 3 20.02.2007 16:50
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:56.