This code is designed to create a non-tabbed table of two rows and five columns in a rich text field to display information. I've added in static text but it could be used to display information from a document as well.
I've implemented this as an agent, as the code this came from was used in this way, but it could be a button, query open etc. You can use the same classes to create a tabbed table, but this tip doesn't do that. This code works with R6 and above only.
Code: Sub Initialize
Dim sess As New NotesSession
Dim ws As New NotesUIWorkspace
Dim dbCurr As NotesDatabase
Dim docProcess As NotesDocument
Dim dcProcess As NotesDocumentCollection
Dim rtiItem As NotesRichTextItem
Dim rtnav As NotesRichTextNavigator
Dim rtt As NotesRichTextTable
Dim rtsTableHeader As NotesRichTextStyle
Dim rtsTableRow As NotesRichTextStyle
Dim sData(4) As String
Dim sHeaders(4) As String
Dim sPrefix As String
Dim iCtr As Integer
Dim iRow As Integer
Dim iCol As Integer
'We declare an array of paragraph
styles to pass in when creating the
table
Dim rtpsCols(4) As
NotesRichTextParagraphStyle
Set dbCurr = sess.CurrentDatabase
Set dcProcess =
dbCurr.UnprocessedDocuments
If dcProcess.Count > 0 Then
'These are display headers for the table
sHeaders(0) = "Header 1"
sHeaders(1) = "Header 2"
sHeaders(2) = "Header 3"
sHeaders(3) = "Header 4"
sHeaders(4) = "Header 5"
'An array of data for the Columns
sData(0) = "Col 1"
sData(1) = "Col 2"
sData(2) = "Col 3"
sData(3) = "Col 4"
sData(4) = "Col 5"
'Set up the text styles we want to
use for displaying the text
Set rtsTableHeader =
sess.CreateRichTextStyle
rtsTableHeader.FontSize = 10
rtsTableHeader.Bold = True
Set rtsTableRow=
sess.CreateRichTextStyle
rtsTableRow.FontSize = 8
rtsTableRow.Bold = False
'Set up the paragraph styles for the table
'The column widths are set
by setting the left margin to 0 then
the right margin to
'what the column width should be
Set rtpsCols(0) =
sess.CreateRichTextParagraphStyle
'This column in left aligned
rtpsCols(0).Alignment = 0
rtpsCols(0).Firstlineleftmargin = 0
rtpsCols(0).Leftmargin = 0
rtpsCols(0).RightMargin =
RULER_ONE_CENTIMETER * 7.51
'This column is centre aligned
Set rtpsCols(1) =
sess.CreateRichTextParagraphStyle
rtpsCols(1).Alignment =3
rtpsCols(1).Firstlineleftmargin = 0
rtpsCols(1).Leftmargin = 0
rtpsCols(1).RightMargin =
RULER_ONE_CENTIMETER * 1.43
Set rtpsCols(2) =
sess.CreateRichTextParagraphStyle
rtpsCols(2).Alignment =3
rtpsCols(2).Firstlineleftmargin = 0
rtpsCols(2).Leftmargin = 0
rtpsCols(2).RightMargin =
RULER_ONE_CENTIMETER * 2.18
Set rtpsCols(3) =
sess.CreateRichTextParagraphStyle
rtpsCols(3).Alignment =3
rtpsCols(3).Firstlineleftmargin = 0
rtpsCols(3).Leftmargin = 0
rtpsCols(3).RightMargin =
RULER_ONE_CENTIMETER * 1.68
Set rtpsCols(4) =
sess.CreateRichTextParagraphStyle
rtpsCols(4).Alignment =0
rtpsCols(4).Firstlineleftmargin = 0
rtpsCols(4).Leftmargin = 0
rtpsCols(4).RightMargin =
RULER_ONE_CENTIMETER * 10.73
Set docProcess = dcProcess.GetFirstDocument
While Not docProcess Is Nothing
'I've used good old Body as my rich text field
Set rtiItem = docProcess.GetFirstItem("Body")
'The styles only have about three fonts that can be
used by default
'Arial isn't one of them so we have to 'Get' it from
the rich text item
'I don't really understand this but that's how it
works...
rtsTableHeader.NotesFont = rtiItem.GetNotesFont
("Arial", True)
rtsTableRow.NotesFont = rtiItem.GetNotesFont("Arial",
True)
'We create the table, with 1 row, 5 columns, "" for the
title, so it's not a tabbed table
'1440 is the margin in twips, which is an inch, or
2.54*567(which is a cm in twips)
'rtpsCols is the array of rich text paragraph styles we
set up earlier
Call rtiItem.AppendTable(1,5,"",1440, rtpsCols)
Call docProcess.Save(True,False)
'In order to get the table elements we have to use a
couple of methods
'One is to get the table as a rich text table element
'The other is just to get navigate to the columns so we
can insert text
'This element enables us to navigate through the rich
text field
Set rtnav = rtiItem.CreateNavigator
'Get the table as a rich text table element so we can
add rows
Set rtt = rtnav.GetFirstElement(RTELEM_TYPE_TABLE)
'Once you set a style the rich text field has that
style until we say otherwise
Call rtiItem.AppendStyle(rtsTableHeader)
'This navigates us to the first table cell
Call rtnav.FindFirstElement
(RTELEM_TYPE_TABLECELL)
For iCol = 1 To 5 Step 1
'Add in our text then get the next cell
Call rtiItem.BeginInsert(rtnav)
Call rtiItem.AppendText(sHeaders(iCol-1))
Call rtiItem.EndInsert
Call rtnav.FindNextElement
(RTELEM_TYPE_TABLECELL)
Next
'Now we change the style to our row style
Call rtiItem.AppendStyle(rtsTableRow)
'Add a row, then go to the first cell in that row,
which will be the next cell
Call rtt.AddRow
Call rtnav.FindNextElement
(RTELEM_TYPE_TABLECELL)
For iCtr=0 To 4
'Add in our text then get the next cell
Call rtiItem.BeginInsert(rtnav)
Call rtiItem.AppendText(sData(iCtr))
Call rtiItem.EndInsert
Call rtnav.FindNextElement
(RTELEM_TYPE_TABLECELL)
Next
Call rtt.AddRow
Call rtnav.FindNextElement
(RTELEM_TYPE_TABLECELL)
For iCtr=0 To 4
Call rtiItem.BeginInsert(rtnav)
Call rtiItem.AppendText(sData(iCtr))
Call rtiItem.EndInsert
Call rtnav.FindNextElement
(RTELEM_TYPE_TABLECELL)
Next
Call docProcess.Save(True,False)
Set docProcess =
dcProcess.GetNextDocument(docProcess)
Wend
End If
End Sub
此代码用于在丰富文本字段中创建一个非Tabbed表格,包含两行五列,用于显示信息。可以通过设置样式来定制显示效果,适用于文档信息展示或未处理文档的快速预览。
1100

被折叠的 条评论
为什么被折叠?



