Добавление Таблицы Rich Text

imendan

Green Team
22.09.2010
159
4
BIT
0
Здравствуйте, лотусисты! Создаю программно таблицу в rich text. Две проблемы:
1. Не могу поместить таблицы к центру.
2. Правый маркер ячейки(2,1) сжимает данные (рисунок приложен).

Код прилагаю:
Dim stylez(1 To 2) As NotesRichTextParagraphStyle
For i% = 1 To 2 Step 1
Set stylez(i%) = session.CreateRichTextParagraphStyle
stylez(i%).Alignment = ALIGN_CENTER
stylez(i%).LeftMargin = 0
stylez(i%).FirstLineLeftMargin = 0
Next

stylez(1).RightMargin = RULER_ONE_INCH * 4
stylez(2).RightMargin = RULER_ONE_INCH * 2

rowCount% = 3
columnCount% = 2
Call rtitem.AppendTable(rowCount%, columnCount%,, RULER_ONE_INCH, stylez)
 

Вложения

  • Таблица.jpg
    Таблица.jpg
    45,2 КБ · Просмотры: 358
A

alexas

Программный дизайн RT Table - еще тот изврат. Нюансов - море!
Нарисуйте\сохраните куда-нибудь шаблон таблицы (шапка+1 строка).
Подгружайте, добавляйте строки, заполняйте.
Сохраните время и нервы. ИМХО.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
Программный дизайн RT Table - еще тот изврат. Нюансов - море!
Нарисуйте\сохраните куда-нибудь шаблон таблицы (шапка+1 строка).
Подгружайте, добавляйте строки, заполняйте.
Сохраните время и нервы. ИМХО.

У меня таблица (шапка), потом текст, потом таблица (это вот), потом дальше текст. Думаю неудобно будет.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
543
Уберите это:
Код:
stylez(1).RightMargin = RULER_ONE_INCH * 4
stylez(2).RightMargin = RULER_ONE_INCH * 2
что произошло?
 

imendan

Green Team
22.09.2010
159
4
BIT
0
Уберите это:
Код:
stylez(1).RightMargin = RULER_ONE_INCH * 4
stylez(2).RightMargin = RULER_ONE_INCH * 2
что произошло?

В рисунке я выделил ячейку(2,1). Обычно в нее автоматически заполняется большой по количеству текст. Но почему-то она сжимается пополам, и, соответственно, текст расползается вниз (некрасиво при распечатке). После многих попыток я обнаружил, что правый маркер наследуется почему-то из второй колонки. Если сделать например, вот так:
stylez(1).RightMargin = RULER_ONE_INCH * 4
stylez(2).RightMargin = RULER_ONE_INCH * 3,
то в первом столбце будет маркер не на 5-ти, а уже на 7.5.
А мне нужно, чтобы соотношение было именно 4:2. По скольку во втором столбце мало данных для отображения.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
543
IMENDAN
Если клиент 8+, то при вставке картинки она сжимается клиентом и никак это не убрать.
Так работает теперь.


тьфу не так прочитал, думал картинку вставляете.
Суть в том, что выставляя выравнивание с правого края RightMargin вы ограничиваете поле для отображения текста.
то есть отступ от правой границы у вас будет 5" и если текст не влезет, то будет сжат.
Поэтому я и говорю - уберите эти строки, закомментируйте посмотрите что будет.
Опять же смотрите, что для первой ячейки вы такое выравнивание не делаете, а только для последних двух строк.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
IMENDAN
Если клиент 8+, то при вставке картинки она сжимается клиентом и никак это не убрать.
Так работает теперь.


тьфу не так прочитал, думал картинку вставляете.
Суть в том, что выставляя выравнивание с правого края RightMargin вы ограничиваете поле для отображения текста.
то есть отступ от правой границы у вас будет 5" и если текст не влезет, то будет сжат.
Поэтому я и говорю - уберите эти строки, закомментируйте посмотрите что будет.
Опять же смотрите, что для первой ячейки вы такое выравнивание не делаете, а только для последних двух строк.

Убрал. Выводит ошибку. Таблица не формируется.
Также не забудьте, не могу в центре создать таблицу. Она прижимается вправо. Хотя по стилю изначально весь текст по центру приравнен.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
543
ну если убрали, то вот это
Код:
Call rtitem.AppendTable(rowCount%, columnCount%,, RULER_ONE_INCH, stylez)
надо заменить на это:
Код:
Call rtitem.AppendTable(rowCount%, columnCount%,, RULER_ONE_INCH)
Иначе действительно ошибка будет.

По второму вопросу:
Чтобы выравнять таблицу, нужно к параграфу таблицы применить стиль, через:
Код:
Call notesRichTextItem.AppendStyle( notesRichTextStyle )' из Help
Только предварительно надо установить "фокус" этот параграф:
поиском через:
Код:
Call notesRichTextItem.BeginInsert( element, [ after ] )

Или через RichTextNavigator найти нужный элемент и выставить BeginInsert.
Правда как это будет работать для RT-пол, которое только создается, я не дам никаких гарантий. Надо пробовать.
 

imendan

Green Team
22.09.2010
159
4
BIT
0
ну если убрали, то вот это
Код:
Call rtitem.AppendTable(rowCount%, columnCount%,, RULER_ONE_INCH, stylez)
надо заменить на это:
Код:
Call rtitem.AppendTable(rowCount%, columnCount%,, RULER_ONE_INCH)
Иначе действительно ошибка будет.

По второму вопросу:
Чтобы выравнять таблицу, нужно к параграфу таблицы применить стиль, через:
Код:
Call notesRichTextItem.AppendStyle( notesRichTextStyle )' из Help
Только предварительно надо установить "фокус" этот параграф:
поиском через:
Код:
Call notesRichTextItem.BeginInsert( element, [ after ] )

Или через RichTextNavigator найти нужный элемент и выставить BeginInsert.
Правда как это будет работать для RT-пол, которое только создается, я не дам никаких гарантий. Надо пробовать.

Таблица формируется со столбцами одинаковой ширины, если убрать ссылку на стиль.
Также крутил вертел не получилось вставить BeginInsert по середке. Почему-то поиск параграфа дает нуль.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
543
ну да, без стиля она растягивается.
провел пару экспериментов:
1. Пустая таблица создается с нормальной шириной колонок, если со стилями.
И если текст писать вручную, то ограничения нет.
Значит проблема при добавлении текста кодом, либо стиль накладывается.
Отсюда выход: подменять стиль после добавления текста. Как-то сложно получается.
2. выравнять таблицу по центру не удастся. стиль применяется до таблицы, она своей жизнью живет.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!