Notesrichtextparagraphstyle

  • Автор темы 11BOSS11
  • Дата начала
1

11BOSS11

#1
класы в IBM действительно индуские. :) ...... , допустим Apend NotesRichTextParagraphStyle есть, а вот аналога взятия этого самого стиля с параграфа я чтото не наблюдаю.... и в екземплах тоже ,... можно тоько скреэйтить новый стиль , потомприсвоить ему нужные свойства, и уже потом приапендить в нужный параграф,....

?? а как скопить стиль с параграфа ??

только о html и DXL пожалуйста ненадо .....
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 231
17
#4
11BOSS11
когда же вы успокоитесь то, ответ в DXML и точка :)
 

nvyush

Lotus team
22.04.2009
2 317
0
#5
?? а как скопить стиль с параграфа ??

только о html и DXL пожалуйста ненадо .....
Из серии "А как бы мне забить гвоздь? Молоток не предлагать..."
В DXL нет ничего страшного/сложного. Чем раньше изучите и начнёте использовать (по назначению, разумеется) — тем лучше.
 
1

11BOSS11

#6
Из серии "А как бы мне забить гвоздь? Молоток не предлагать..."
В DXL нет ничего страшного/сложного. Чем раньше изучите и начнёте использовать (по назначению, разумеется) — тем лучше.
я понимаю , но в моем случае мне надо избавится от этого............
там есть свои нюансы...............
 

nvyush

Lotus team
22.04.2009
2 317
0
#7
я понимаю , но в моем случае мне надо избавится от этого............
там есть свои нюансы...............
Ну как Вы не поймёте — данная задача рт-классами не может быть решена. Как Вами же было отмечено
класы в IBM действительно индуские
. Убъёте кучу сил, времени и нервов (в том числе форумчан), но в итоге, либо сделаете всё через DXL, либо не сделаете вовсе.
 
13.03.2009
625
1
#8
а какую задачу решаете? сформулируйте сюда, может найдеца другой путь...
 
1

11BOSS11

#9
Ну как Вы не поймёте — данная задача рт-классами не может быть решена. Как Вами же было отмечено . Убъёте кучу сил, времени и нервов (в том числе форумчан), но в итоге, либо сделаете всё через DXL, либо не сделаете вовсе.
ну я уже много чего решил из того ,что мне говорили не решаемо рт класами...................

испоьзуя DXL надо выгружать файл , а у пользователя может не бытьправ доступа на вугрузку файлов...........





Добавлено:
а какую задачу решаете? сформулируйте сюда, может найдеца другой путь...
ну задача почти решена......... отсались маленькие учловности........(пришлось поставить некоторые ограничения в связи с индейскими класами )

NotesRichTextStyle и NOtesRichTextParagarphStyle- это не одно и тоже......... NotesRichTextStyle я прекрасно беру от Ренжа, и потом присваиваю,- все нормально) а вот с NOtesRichTextParagarphStyle (отступы, вырввнивание, граници, и т. д.) другой вопрос, - нужно его как то вытянуть с параграфа, ячейки, неважно......
 
13.03.2009
625
1
#10
ну я уже много чего решил из того ,что мне говорили не решаемо рт класами...................
много чего - это здорово. но задачу вы так и не решили.
испоьзуя DXL надо выгружать файл
очередное заблуждение.
 

nvyush

Lotus team
22.04.2009
2 317
0
#11
испоьзуя DXL надо выгружать файл , а у пользователя может не бытьправ доступа на вугрузку файлов...........
Вовсе необязательно. Можно выгрузить в рт-поле временного документа, в поток. Читайте справку.
 
13.03.2009
625
1
#12
ну задача почти решена......... отсались маленькие учловности........(пришлось поставить некоторые ограничения в связи с индейскими класами )
NotesRichTextStyle и NOtesRichTextParagarphStyle- это не одно и тоже......... NotesRichTextStyle я прекрасно беру от Ренжа, и потом присваиваю,- все нормально) а вот с NOtesRichTextParagarphStyle (отступы, вырввнивание, граници, и т. д.) другой вопрос, - нужно его как то вытянуть с параграфа, ячейки, неважно......
хочеца все-таки увидеть не решение задачи, а саму задачу...
 
1

11BOSS11

#13
хочеца все-таки увидеть не решение задачи, а саму задачу...
постановка задачи:
1.Создать новый документ в теневом режиме, скопить туда РТИтем с РТТаблицей.
2.Добавляем нужное число строк в новую таблицу , заполняем, присваиваем ранее скопированные стили (RTStyle готово, а с RTParagraphStyle и есть проблема(приапендить то без проблем)в считывании ) ............


Вот собственно говоря и все...... :)
 
1

11BOSS11

#15
Call notesDocument.CopyItem( item, newName$ )
Call notesItem.CopyItemToDocument( document, newName$ )
не подойдёт?
это все уже готово, спасибо.......... :)

мне нужна сейчас только одна вещь - считать стиль параграфа NOtesRichTextParagraphStyle (выравнивание, отступы.....)
 
1

11BOSS11

#16
а вообще , как-нибуть можна взять выравнивение с RichTextTable ........ для меня это самое важное ........хотябы выравнивание как-нить достать..........
 
1

11BOSS11

#17
вот скрипт с помощю которого я бегу по ячейкам таблици РТ ИТЕМА и апенжу в каждую текст :
Код:
Call body.AppendText("Дописываем текст")
если убрать вот эту строчку:
Код:
Call body.AppendParagraphStyle(rtpStyle)
- все работает нормально!
в чем проблема когда присваиваем стиль.......ругается...........
если сделать
Код:
Call body.BeginInsert( rtNavTable )
Call body.AppendParagraphStyle(rtpStyle)
Call body.AppendText("Дописываем текст")
Call body.EndInsert
без BeginInsert и EndInsert
- тогда оно нормально добавит стиль, ПРАВДА В САМЫЙ КОНЕЦ РТ ИТЕМА(аж за табилцу)


Код:
REM Find first table in Body item
Set rtnav = body.CreateNavigator
If Not rtnav.FindFirstElement(RTELEM_TYPE_TABLE) Then
Messagebox "Body item does not contain a table,",, _
"Error"
Exit Sub
End If 
REM Set up range and navigator for table
Set rtRangeTable = body.CreateRange
Call rtRangeTable.SetBegin(rtnav)
Call rtRangeTable.SetEnd(rtnav)

Set rtNavTable = rtRangeTable.Navigator
REM Find cells in table
Set rtRangeCell = body.CreateRange
Set rtRangePara = body.CreateRange
cellCounter = 0
Call rtNavTable.FindFirstElement(RTELEM_TYPE_TABLECELL)

Call	body.Update
Do
Call body.BeginInsert( rtNavTable )
Call body.AppendParagraphStyle(rtpStyle)
Call body.AppendText("Дописываем текст")
Call body.EndInsert
'msg= "" 
cellCounter = cellCounter + 1

REM Set up range and navigator for cell
Call rtRangeCell.SetBegin(rtNavTable)
Call rtRangeCell.SetEnd(rtNavTable)
Set rtNavCell = rtRangeCell.Navigator

Loop While rtNavTable.FindNextElement(RTELEM_TYPE_TABLECELL)

Параграф стайл я определяю раньше(с ним все нормально).............
 
1

11BOSS11

#18
в выше написаном скрпте я уже не беру, а добавляю РТпараграфсСтайл..........
 
13.03.2009
625
1
#19
постановка задачи:
1.Создать новый документ в теневом режиме, скопить туда РТИтем с РТТаблицей.
2.Добавляем нужное число строк в новую таблицу , заполняем, присваиваем ранее скопированные стили (RTStyle готово, а с RTParagraphStyle и есть проблема(приапендить то без проблем)в считывании ) ............
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">для затравки</div></div><div class="sp-body"><div class="sp-content">
Код:
' добавляет новую(пустую) строку во все таблицы документа
' форматирование береца из последней строки таблицы.
Private Sub processDoc( doc As NotesDocument )
Dim session As New NotesSession
' выгружаем документ в DXL и строим DOM
Dim domParser As NotesDOMParser
Set domParser=session.CreateDOMParser()
Dim exporter As NotesDXLExporter
Set exporter = session.CreateDXLExporter
Call exporter.SetInput(doc)
Call exporter.SetOutput(domParser)
exporter.process
' проходим по всем таблицам документа, выполняем нужное преобразования
Dim tables As NotesDOMNodeList 
Set tables = domParser.Document.GetElementsByTagName("table")
Dim i As Long
For i = 1 To tables.NumberOfEntries
Call addRowToTable( tables.GetItem(i) )		
Next
' засасываем результат обратно в виде нового документа.
Dim importer As NotesDXLImporter
Set importer = session.CreateDXLImporter
Call domParser.setOutput( importer )
Call importer.setOutput( doc.ParentDatabase )
domParser.Serialize
Call importer.Import	
End Sub

Private Sub addRowToTable( table As notesDOMNode )
Dim clonedLastRow As NotesDOMNode 
Set clonedLastRow = table.LastChild.clone( True ) ' table.LastChild - последняя строка(tablerow) в таблице
Call clearAllText( clonedLastRow )
Call table.AppendChild( clonedLastRow )
End Sub

' удаляем текст из элемента и его потомков
Private Sub clearAllText( node As NotesDOMNode )
' так чистим содержимое ячеек:
' If node.NodeType = DOMNODETYPE_TEXT_NODE Then node.NodeValue = ""
' а так - кладем нужный текст: 
If node.NodeType = DOMNODETYPE_TEXT_NODE Then
If node.ParentNode.NodeName = "par" Or node.ParentNode.NodeName = "run" Then
node.NodeValue = "your text goes here"	
End If
End If
' рекурсивный вызов для потомков	
Dim child As NotesDOMNode
Set child = node.FirstChild 
Dim i As Long
For i = 1 To node.NumberOfChildNodes
Call clearAllText( child )
Set child = child.NextSibling
Next
End Sub
логику заполнения ячеек нужным текстом предлагаю реализовать самостоятельно.
 

Вложения

nvyush

Lotus team
22.04.2009
2 317
0
#20
turumbay
Глянул картинки — аж похужело, подумал, неужели без ДХЛ справился <_< ? Глянул код — отлегло :ithx: ...