通过LS操作RTF文本域

 一直以来,Lotus Notes 的富文本域都是使用非常频繁的,几乎在任何 Domino 应用程序中,都会用到富文本域。Lotus Notes 富文本域的功能也非常强大,除了支持普通的文本以外,还支持图片、表格、嵌入对象、Http 链接、Notes 链接、附件等等众多的类型。但是有个问题一直长期困扰着 LotusScript 开发人员,那就是对 Notes 富文本域里面的各种类型的内容的灵活操作很困难,其实 Domino 在不断升级的过程中,已经增加了许多新的 LotusScript 类来操作 Notes 富文本域了,但是很多 LotusScript 开发人员对此并不熟悉。本文将介绍如何使用这些类来灵活操作富文本域。
操作 Notes 富文本域相关的 LotusScript 类
和操作 Notes 富文本域相关的 LotusScript 类包括:
NotesRichTextNavigator 富文本域的导航器,用来访问富文本域中的各种元素;
NotesRichTextRange 表示富文本域内容的一个范围,可以包括多个元素;
NotesRichTextDocLink 表示富文本域内容的文档链接;
NotesEmbeddedObject 表示嵌入式对象或者文件附件;
NotesRichTextSection 表示富文本域中的一个区段;
NotesRichTextTable 表示富文本域中的表格;
NotesRichTextStyle 表示富文本的各种属性;
NotesRichTextParagraphStyle 表示富文本段落的各种属性;
NotesColorObject 表示一种颜色。

下面我们通过一个程序来分析各个类的使用方法。
首先我们建立一个空白的nsf数据库,然后建立一个名为“test_rtf”的表单,这个表单中只有一个名为“Body”的富文本域,然后在缺省视图里面建立一个过滤条件名为“test”的视图,代理中的代码如下。这段程序将生成一个文档,文档中包含一个富文本域,并在富文本域中生成各种元素。
--------------------------------------------------
Sub Initialize()
 On Error GoTo a

 Dim s As New NotesSession 
 Dim db As NotesDatabase
 Set db = s.CurrentDatabase
 Dim doc As NotesDocument 
 Set doc = New NotesDocument(db)
 
 doc.Form  = "test_rtf"
 doc.DocID = doc.Universalid
 
 Dim rtf As NotesRichTextItem 
 Set rtf = doc.CreateRichTextItem ("Body")
 
 '生成一个文本段落并设置其字体大小,颜色等属性 
 Dim style As NotesRichTextStyle
 Set style = s.CreateRichTextStyle
 
 Dim pstyle As NotesRichTextParagraphStyle
 Set pstyle = s.CreateRichTextParagraphStyle
 
 Dim color As NotesColorObject
 Set color = s.CreateColorObject
 
 style.FontSize = 20 
 style.Bold = True
 pstyle.Alignment = ALIGN_LEFT
 pstyle.FirstLineLeftMargin = RULER_ONE_INCH
 
 Call color.SetRGB(123, 234, 123)
 style.NotesColor = color.NotesColor
 Call rtf.AppendStyle(style)
 
 Call rtf.AppendParagraphStyle(pstyle)
 Call rtf.AppendText("这是一个文本段落,靠左对齐。") 
 Call rtf.AddNewline(1)
 
 '生成一个数据库链接,链接到当前数据库 
 Call rtf.AppendDocLink(db,"链接到当前数据库", "当前数据库")
 
 '生成一个包含一个表格的区段
 Call rtf.AppendStyle(style) 
 Call rtf.BeginSection("这是一个区段", style, color, True) 
 Call rtf.AppendText("这是区段的开始")
 
 Dim iRow As Integer
 Dim iCol As Integer
 iRow% = 3
 iCol% = 3
 style.NotesColor = COLOR_BLUE 
 Call rtf.AppendStyle(style)
 
 '添加一个3X3的表格
 Call rtf.AppendTable(iRow%, iCol%) 
 Call rtf.AppendText("这是区段的结束") 
 Call rtf.EndSection
 
 Dim nav As NotesRichTextNavigator
 Set nav = rtf.CreateNavigator 
 Call nav.FindFirstElement(RTELEM_TYPE_TABLECELL)
 
 style.FontSize=16
 style.Bold=False 
 Call rtf.AppendStyle(style)
 
 Dim i As Integer
 Dim j As Integer
 For i% = 1 To iRow%
  For j% = 1 To iCol%
   Call rtf.BeginInsert(nav) 
   Call rtf.AppendText("行 " & i% & ", 列 " & j%)
   Call rtf.EndInsert 
   Call nav.FindNextElement(RTELEM_TYPE_TABLECELL)
   Next
  Next
 
 '添加一个附件 
 Call rtf.EmbedObject(EMBED_ATTACHMENT, "", "D:\aa1.png") 
 Call doc.Save(True,True)

 
 Exit Sub
a:
 MsgBox "错误在代理agent_rtf的第" & Erl & "行,描述:---" & error
 
End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值