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

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
#1
Помогите, пожалуйста, оформить таблицу.
Необходимо автоматически формировать письмо по выбранным документам в таблицу заданной формы.
Создать таблицу и занести значения, это всё получается. Шрифт тоже управляем.
А вот задать ширину сталбцов и выравнивание текста в ячейках никак :)
Если задаю параметры параграфа перед таблицей, то центрируется содержимое только первой ячейки.
Если применяю стили при создании таблицы, ширина столбцов задается, но еще и внутри ячейки для текста задается такой же отступ справа и это смещает текст.
Может у кого подобный пример форматирования есть?
В идеале, там еще надо одну ячейку объединить, но это пока не трогаю.
 

erdi

Well-Known Member
20.08.2008
265
36
#2
а перед вставкой текста применяй стиль для текста...что-то типо этого
Код:
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
 

yerke

Well-Known Member
28.08.2007
392
0
#3
Помогите, пожалуйста, оформить таблицу.
Необходимо автоматически формировать письмо по выбранным документам в таблицу заданной формы.
Создать таблицу и занести значения, это всё получается. Шрифт тоже управляем.
А вот задать ширину сталбцов и выравнивание текста в ячейках никак :)
Если задаю параметры параграфа перед таблицей, то центрируется содержимое только первой ячейки.
Если применяю стили при создании таблицы, ширина столбцов задается, но еще и внутри ячейки для текста задается такой же отступ справа и это смещает текст.
Может у кого подобный пример форматирования есть?
В идеале, там еще надо одну ячейку объединить, но это пока не трогаю.
Код:
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
 

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
#4
делала так
Код:
	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-х первых строках выравнивание по центру, а далее по левому краю, как к нему перейти?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#5
если таблиц всегда имеет одинаковое форматирование - так почемубы не сделать готовый шаблон и содержимое добавлять?
Код:
...
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 - это и есть док с шаблоном таблицы в РТ поле
 

savl

Well-Known Member
Lotus team
28.10.2011
2 126
163
#6
Не забудте про предел в 255 строк таблицы
 

Oksana

Well-Known Member
Lotus team
10.01.2006
329
0
#7
если таблиц всегда имеет одинаковое форматирование - так почемубы не сделать готовый шаблон и содержимое добавлять?
Спасибо, сделала через готовый шаблон.
Хотя вот странно кажется, вроде всего-то пару строк добавить поменять выравнивание и дальше заполняй ячейки.
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 484
360
#8
РТ классы очень глючные, чем меньше с ними манипуляций - тем меньше непредсказуемого поведения B)
 

KingGLEB

Active Member
08.05.2008
30
0
#9
А не проще, если надо таблицу отправить письмом, то нарисовать HTML табличку и заполнить её как надо? Цвета, объединение ячеек, фон, ссылки, короче все прелести.
Сам долго парился с таблицами в письмах, но в какой-то момент надоело и стал отправлять письма в html.
 

afest

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