Помогите Оформить Таблицу

Тема в разделе "Lotus - Программирование", создана пользователем Oksana, 27 мар 2013.

  1. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Помогите, пожалуйста, оформить таблицу.
    Необходимо автоматически формировать письмо по выбранным документам в таблицу заданной формы.
    Создать таблицу и занести значения, это всё получается. Шрифт тоже управляем.
    А вот задать ширину сталбцов и выравнивание текста в ячейках никак :)
    Если задаю параметры параграфа перед таблицей, то центрируется содержимое только первой ячейки.
    Если применяю стили при создании таблицы, ширина столбцов задается, но еще и внутри ячейки для текста задается такой же отступ справа и это смещает текст.
    Может у кого подобный пример форматирования есть?
    В идеале, там еще надо одну ячейку объединить, но это пока не трогаю.
     
  2. erdi

    erdi Well-Known Member

    Регистрация:
    20 авг 2008
    Сообщения:
    261
    Симпатии:
    36
    а перед вставкой текста применяй стиль для текста...что-то типо этого
    Код (Text):
    Select Case iColumn
    Case 1:richStyle.Bold = True
    richStyle.NotesColor=COLOR_BLACK
    Call bodys.AppendStyle(richStyle)
    Call bodys.AppendText(col1(iRow) )
    Case 2:richStyle.Bold = False
    Call bodys.AppendStyle(richStyle)
    Call bodys.AppendText( col2(iRow))
    Case 3:richStyle.Bold = True
    richStyle.NotesColor=200
    Call bodys.AppendStyle(richStyle)
    Call bodys.AppendText( col3(iRow)) 
    End Select
     
  3. yerke

    yerke Well-Known Member

    Регистрация:
    28 авг 2007
    Сообщения:
    392
    Симпатии:
    0
    Код (LotusScript):
    arr(1) = 3.5
    arr(2) = 4
    arr(3) = 2
    arr(4) = 2.5
    arr(5) = 6
    arr(6) = 5.5
    For i = 1 To cc
    Set rtpsStyleArray(i) = ini.s.CreateRichTextParagraphStyle
    rtpsStyleArray(i).Alignment = ALIGN_LEFT
    rtpsStyleArray(i).FirstLineLeftMargin = 0
    rtpsStyleArray(i).LeftMargin = 0
    rtpsStyleArray(i).RightMargin = RULER_ONE_CENTIMETER * arr(i)
    Next

    '=create and get table
    Call rti.AppendTable(1, cc, , , rtpsStyleArray)
    cc - count of columns
     
  4. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    делала так
    Код (Text):
        Dim styles(1 To 4) As NotesRichTextParagraphStyle
    'стиль столбца для каждого стобца
    For k = 1 To NumC Step 1
    Set styles(k) = s.CreateRichTextParagraphStyle
    styles(k).LeftMargin = 0
    styles(k).FirstLineLeftMargin = 0
    styles(k).Alignment = ALIGN_CENTER 'Выравнивание по центру
    Next
    '   'задаем ширину для каждого столбца
    styles(1).RightMargin = RULER_ONE_CENTIMETER * 1
    styles(2).RightMargin = RULER_ONE_CENTIMETER * 4
    styles(3).RightMargin = RULER_ONE_CENTIMETER * 3
    styles(4).RightMargin = RULER_ONE_CENTIMETER * 2
    добавляется правый отступ внутри ячейки.
    Повторила у себя ваш пример, получилось. Но не вижу где у меня ошибка (разница лишь в том как задаем ширину ведь?) Нашла, у себя в коде применение стиля, до таблицы, из-за него видать съезжало. Отступы ушли.

    Остается вопрос
    : мне надо только в 2-х первых строках выравнивание по центру, а далее по левому краю, как к нему перейти?
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    если таблиц всегда имеет одинаковое форматирование - так почемубы не сделать готовый шаблон и содержимое добавлять?
    Код (LotusScript):
    ...
    Set rt=doc.GetFirstItem({tblAdd})
    Call body.AppendRTItem(rt)

    Dim rtnav As NotesRichTextNavigator
    Set rtnav = body.CreateNavigator
    If Not rtnav.FindFirstElement(RTELEM_TYPE_TABLE) Then
    Messagebox "Could not find table",, "Fatal error"
    Exit Sub
    End If
    Dim rtt As NotesRichTextTable
    Set rtt = rtnav.GetElement
    ...
    'здесь уже модифицируем таблицу
    cols=rtt.ColumnCount
    rtnav.FindLastElement(RTELEM_TYPE_TABLECELL)
    rtt.AddRow(rows)
    rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
    ...
    'в некоем цикле
    Call body.BeginInsert(rtnav)
    Call body.AppendText(info(1))
    Call body.EndInsert
    Call rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)
    то что условно является хидером - заполняем аналогично (до AddRow) - но оно уже имеет нужные отступы
    doc - это и есть док с шаблоном таблицы в РТ поле
     
  6. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Не забудте про предел в 255 строк таблицы
     
  7. Oksana

    Oksana Lotus team
    Lotus team

    Регистрация:
    10 янв 2006
    Сообщения:
    330
    Симпатии:
    0
    Спасибо, сделала через готовый шаблон.
    Хотя вот странно кажется, вроде всего-то пару строк добавить поменять выравнивание и дальше заполняй ячейки.
     
  8. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    РТ классы очень глючные, чем меньше с ними манипуляций - тем меньше непредсказуемого поведения B)
     
  9. KingGLEB

    KingGLEB Active Member

    Регистрация:
    8 май 2008
    Сообщения:
    30
    Симпатии:
    0
    А не проще, если надо таблицу отправить письмом, то нарисовать HTML табличку и заполнить её как надо? Цвета, объединение ячеек, фон, ссылки, короче все прелести.
    Сам долго парился с таблицами в письмах, но в какой-то момент надоело и стал отправлять письма в html.
     
  10. afest

    afest Well-Known Member

    Регистрация:
    16 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Если это транспортировать в Excell или Word (в общем любой другой OLE объект), то есть в каждом приложении инструкция по совместимости, программированию и т.п. (в мелкософтовских там юзается Visual Basic). Самое главное - знание инглиша! Ибо на руссише нема перевода...
     
Загрузка...

Поделиться этой страницей