日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

利用 LotusScript 灵活操作 Lotus Notes 富文本域

發(fā)布時(shí)間:2024/4/11 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用 LotusScript 灵活操作 Lotus Notes 富文本域 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡(jiǎn)介:?本文介紹了如何利用 LotusScript. 來(lái)靈活操作 Lotus Notes 富文本域(Rich Text Field)里的內(nèi)容,并提供了幾個(gè)示例程序來(lái)進(jìn)行展示。要求讀者有 LotusScript. 編程經(jīng)驗(yàn)并能熟練使用 Lotus Domino Designer。

引言

一直以來(lái),Lotus Notes 的富文本域都是使用非常頻繁的,幾乎在任何 Domino 應(yīng)用程序中,都會(huì)用到富文本域。Lotus Notes 富文本域的功能也非常強(qiáng)大,除了支持普通的文本以外,還支持圖片、表格、嵌入對(duì)象、Http 鏈接、Notes 鏈接、附件等等眾多的類(lèi)型。但是有個(gè)問(wèn)題一直長(zhǎng)期困擾著 LotusScript. 開(kāi)發(fā)人員,那就是對(duì) Notes 富文本域里面的各種類(lèi)型的內(nèi)容的靈活操作很困難,其實(shí) Domino 在不斷升級(jí)的過(guò)程中,已經(jīng)增加了許多新的 LotusScript. 類(lèi)來(lái)操作 Notes 富文本域了,但是很多 LotusScript. 開(kāi)發(fā)人員對(duì)此并不熟悉。本文將介紹如何使用這些類(lèi)來(lái)靈活操作富文本域。

操作 Notes 富文本域相關(guān)的 LotusScript. 類(lèi)

和操作 Notes 富文本域相關(guān)的 LotusScript. 類(lèi)包括:

  • NotesRichTextNavigator 富文本域的導(dǎo)航器,用來(lái)訪問(wèn)富文本域中的各種元素;
  • NotesRichTextRange 表示富文本域內(nèi)容的一個(gè)范圍,可以包括多個(gè)元素;
  • NotesRichTextDocLink 表示富文本域內(nèi)容的文檔鏈接;
  • NotesEmbeddedObject 表示嵌入式對(duì)象或者文件附件;
  • NotesRichTextSection 表示富文本域中的一個(gè)區(qū)段;
  • NotesRichTextTable 表示富文本域中的表格;
  • NotesRichTextStyle. 表示富文本的各種屬性;
  • NotesRichTextParagraphStyle. 表示富文本段落的各種屬性;
  • NotesColorObject 表示一種顏色。

使用示例

下面我們通過(guò)一個(gè)程序來(lái)分析各個(gè)類(lèi)的使用方法。

首先我們建立一個(gè)空白的 Domino 應(yīng)用程序,然后建立一個(gè)名為“test”的表單,這個(gè)表單中只有一個(gè)名為“Body”的富文本域,然后在缺省視圖里面建立一個(gè) Action 名為“test”,代碼如下。這段程序?qū)⑸梢粋€(gè)文檔,文檔中包含一個(gè)富文本域,并在富文本域中生成各種元素。


清單 1. 生成各種元素
Sub Click(Source As Button)Dim s As New NotesSessionDim db As NotesDatabaseDim doc As NotesDocumentSet db = s.CurrentDatabaseSet doc = New NotesDocument(db)doc.Form. = "test"Dim rtf As NotesRichTextItem Set rtf = doc.CreateRichTextItem ("Body")'生成一個(gè)文本段落并設(shè)置其字體大小,顏色等屬性Dim style. As NotesRichTextStyle. Set style. = s.CreateRichTextStyle. Dim pstyle. As NotesRichTextParagraphStyle. Set pstyle. = s.CreateRichTextParagraphStyle. Dim color As NotesColorObjectSet color = s.CreateColorObjectstyle.FontSize = 20style.Bold = Truepstyle.Alignment = ALIGN_LEFTpstyle.FirstLineLeftMargin = RULER_ONE_INCHCall color.SetRGB(123, 234, 123) style.NotesColor = color.NotesColorCall rtf.AppendStyle(style)Call rtf.AppendParagraphStyle(pstyle)Call rtf.AppendText("這是一個(gè)文本段落,靠左對(duì)齊。")Call rtf.AddNewline(1)'生成一個(gè)鏈接,鏈接到當(dāng)前數(shù)據(jù)庫(kù)Call rtf.AppendDocLink(db, "鏈接到當(dāng)前數(shù)據(jù)庫(kù)", "當(dāng)前數(shù)據(jù)庫(kù)")'生成一個(gè)包含一個(gè)表格的區(qū)段Call rtf.AppendStyle(style)Call rtf.BeginSection("這是一個(gè)區(qū)段", style, color, True)Call rtf.AppendText("這是區(qū)段的開(kāi)始")iRow% = 3iCol% = 3style.NotesColor = COLOR_BLUECall rtf.AppendStyle(style)'添加一個(gè)3X3的表格Call rtf.AppendTable(iRow%, iCol%) Call rtf.AppendText("這是區(qū)段的結(jié)束")Call rtf.EndSectionDim nav As NotesRichTextNavigatorSet nav = rtf.CreateNavigatorCall nav.FindFirstElement(RTELEM_TYPE_TABLECELL) style.FontSize=16style.Bold=FalseCall rtf.AppendStyle(style)For i% = 1 To iRow%For j% = 1 To iCol%Call rtf.BeginInsert(nav)Call rtf.AppendText("行 " & i% & ", 列 " & j%)Call rtf.EndInsertCall nav.FindNextElement(RTELEM_TYPE_TABLECELL)NextNext'添加一個(gè)附件Call rtf.EmbedObject(EMBED_ATTACHMENT, "", "C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures\Water lilies.jpg")Call doc.Save(True,True) End Sub

下面的圖片是運(yùn)行這個(gè)程序后生成的文檔截圖:


圖 1. 程序生成文檔圖

下面將分析一下這個(gè)程序中使用的一些方法。

  • NotesSession.CreateRichTextStyle:創(chuàng)建一個(gè) NotesRichTextStyle. 對(duì)象。
  • NotesSession.CreateRichTextParagraphStyle:創(chuàng)建一個(gè) NotesRichTextParagraphStyle. 對(duì)象。
  • NotesSession.CreateColorObject:創(chuàng)建一個(gè) NotesColorObject 對(duì)象。

    需要注意的是 NotesRichTextStyle,NotesRichTextParagraphStyle. 和 NotesColorObject 這三種對(duì)象是不能用 New 來(lái)創(chuàng)建的,因?yàn)檫@三個(gè)類(lèi)沒(méi)有 New() 方法,只能通過(guò) NotesSession 來(lái)創(chuàng)建。

  • NotesRichTextItem.AppendStyle:在當(dāng)前位置插入一個(gè)格式對(duì)象,該位置以后的格式都使用這種格式,直到插入了另外一個(gè)格式。
  • NotesRichTextItem.AppendParagraphStyle:在當(dāng)前位置插入一個(gè)段落格式對(duì)象,該位置以后的段落格式都使用這種格式,直到插入了另外一個(gè)段落格式。
  • NotesRichTextItem.BeginSection:在富文本域中插入一個(gè)區(qū)段。
  • NotesRichTextItem.EndSection:區(qū)段結(jié)束,必須和 BeginSection 配對(duì)使用。

    在兩個(gè)方法之間可以通過(guò)各種 append 方法添加各種元素。插入?yún)^(qū)段的時(shí)候,區(qū)段總是在富文本域的最后。還需要注意的是不能創(chuàng)建一個(gè)包含富文本域中已有的元素的區(qū)段,通過(guò) BeginSection 方法創(chuàng)建的區(qū)段總是空的,區(qū)段的內(nèi)容需要通過(guò)程序自己添加。

  • NotesRichTextItem.CreateNavigator:創(chuàng)建一個(gè)富文本域?qū)Ш狡鲗?duì)象 NotesRichTextNavigator。

    創(chuàng)建一個(gè)富文本域?qū)Ш狡髦荒苁褂眠@種方法,NotesRichTextNavigator 也沒(méi)有 new 方法。也可以 NotesRichTextRange.Navigator 屬性來(lái)得到一個(gè) NotesRichTextNavigator 對(duì)象。

  • NotesRichTextNavigator 類(lèi)是用來(lái)靈活訪問(wèn)操作富文本域里的內(nèi)容的最重要的一個(gè)類(lèi),通過(guò)它的一些方法,可以方便的訪問(wèn)到各種富文本域中的元素。

    導(dǎo)航器對(duì)象 NotesRichTextNavigator 會(huì)維護(hù)一個(gè)當(dāng)前位置,任何在富文本域中的 get 或者 find 的操作都可能會(huì)改變這個(gè)當(dāng)前位置。導(dǎo)航總發(fā)生在同一種類(lèi)型的元素中,主要通過(guò) find 和 get 兩類(lèi)方法來(lái)訪問(wèn)相應(yīng)的元素,找到需要的元素后,再通過(guò) get 方法來(lái)取得這個(gè)元素。下表列出了這些方法。


表 1. 方法列表
方法名描述
FindFirstElement將當(dāng)前位置移動(dòng)到指定類(lèi)型的第一個(gè)元素
FindNextElement將當(dāng)前位置移動(dòng)到指定類(lèi)型的下一個(gè)元素
FindLastElement將當(dāng)前位置移動(dòng)到指定類(lèi)型的最后一個(gè)元素
FindNthElement將當(dāng)前位置移動(dòng)到指定類(lèi)型的第 n 個(gè)元素
FindFirstString將當(dāng)前位置移動(dòng)到第一個(gè)指定字符串的開(kāi)頭
FindNextString將當(dāng)前位置移動(dòng)到下一個(gè)指定字符串的開(kāi)頭
GetElement返回當(dāng)前位置的元素
GetFirstElement返回第一個(gè)指定類(lèi)型的元素
GetLastElement返回最后一個(gè)指定類(lèi)型的元素
GetNextElement返回下一個(gè)指定類(lèi)型的元素
GetNthElement返回第 n 個(gè)指定類(lèi)型的元素

NotesRichTextItem.BeginInsert:將插入位置從富文本域結(jié)尾處改為指定元素的開(kāi)始或者結(jié)尾處。

NotesRichTextItem.EndInsert:將插入位置重置到富文本域的結(jié)尾處,需要和 BeginInsert 配對(duì)使用。

在兩個(gè)方法之間可以通過(guò)各種 append 方法添加各種元素。我們來(lái)看看 BeginInsert 的具體使用方法:

Call notesRichTextItem.BeginInsert( element, [ after ] )

參數(shù)說(shuō)明

element:可以是 NotesEmbeddedObject, NotesRichTextDocLink, NotesRichTextNavigator, NotesRichTextRange, NotesRichTextSection, 或者 NotesRichTextTable,表示該對(duì)象的位置 . 如果是 NotesRichTextNavigator 則表示此 NotesRichTextNavigator 對(duì)象所表示的當(dāng)前位置。

After:布爾型可選參數(shù),True 表示插入位置在元素的末尾,False(缺省值)表示插入位置在元素的開(kāi)頭。

通過(guò)上面的簡(jiǎn)單的例子,我們可以看到如何利用 LotusScript. 來(lái)操作富文本域,下面我們通過(guò)另外一個(gè)例子來(lái)展示如何利用 LotusScript. 來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的類(lèi)似 Word 中將一段文本和表格互相轉(zhuǎn)換的功能,主要展示的是如何利用 NotesRichTextRange 類(lèi)來(lái)操作富文本域中的文本段落。

首先建一個(gè)表單 test,表單中創(chuàng)建一個(gè) Body 的富文本域,然后創(chuàng)建一個(gè)表單操作名為 Text2Table,完成將文本轉(zhuǎn)化為表格的功能。代碼如下:


清單 2 將文本轉(zhuǎn)化為表格
Sub Click(Source As Button)Dim s As New NotesSessionDim ws As New NotesUIWorkspaceDim uidoc As NotesUIDocumentSet uidoc = ws.CurrentDocumentDim doc As NotesDocumentSet doc = uidoc.DocumentDim rtf As NotesRichTextItemSet rtf = doc.GetFirstItem("Body")'設(shè)定分隔符為空格delimiter$ = " "rowcount% = 0colcount% = 0Dim rtnav As NotesRichTextNavigatorSet rtnav = rtf.CreateNavigatorDim rtrange As NotesRichTextRangeDim rows() Dim paraArray As VariantDim paraStr As StringDim firstTime As BooleanfirstTime = TrueIf rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL) ThenMsgbox "表格已經(jīng)存在!"Exit SubEnd IfIf rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH) ThenSet rtrange = rtf.CreateRangeDo'設(shè)置文本范圍的開(kāi)始為rtnav所指向的位置Call rtrange.SetBegin(rtnav)'取得該位置的文本段落paraStr = rtrange.TextParagraphparaArray = Split(paraStr)'通過(guò)firstTime來(lái)判斷文本段落的格式是否能轉(zhuǎn)化為表格If firstTime Thencolcount% = Ubound(paraArray)firstTime = FalseElseIf colcount% <> Ubound(paraArray) ThenMsgbox "文本無(wú)法轉(zhuǎn)化為表格!"Exit SubEnd IfEnd If'定義動(dòng)態(tài)數(shù)組來(lái)保存所有的文本段落Redim Preserve rows(rowcount%)rows(rowcount%) = paraArrayrowcount% = rowcount% + 1Loop While rtnav.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)ElseMessagebox "富文本域中沒(méi)有文本"Exit SubEnd If'將富文本域值清空rtf.Values = ""rowcount% = rowcount% - 1'插入表格,并將保存的文本依次插入相應(yīng)的表格單元Dim row As VariantCall rtf.AppendTable(rowcount%+1, colcount%+1)Call rtnav.FindFirstElement(RTELEM_TYPE_TABLECELL)For i% = 0 To rowcount%row = rows(i%)For j% = 0 To colcount%Call rtf.BeginInsert(rtnav)Call rtf.AppendText(row(j%))Call rtf.EndInsertCall rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)NextNext'保存文檔并重新打開(kāi)以刷新Call doc.Save(True, True)Call uidoc.Close(True)Call ws.EditDocument(False,doc)End Sub

再建立一個(gè)表單操作名為 Table2Text,完成將表格轉(zhuǎn)化為文本的功能。代碼如下:


清單 3 將表格轉(zhuǎn)化為文本
Sub Click(Source As Button)Dim s As New NotesSessionDim ws As New NotesUIWorkspaceDim uidoc As NotesUIDocumentSet uidoc = ws.CurrentDocumentDim doc As NotesDocumentSet doc = uidoc.DocumentDim rtf As NotesRichTextItemSet rtf = doc.GetFirstItem("Body")delimiter$ = " "Dim rtnav As NotesRichTextNavigatorSet rtnav = rtf.CreateNavigatorDim rtrange As NotesRichTextRangeSet rtrange = rtf.CreateRangeDim tbl As NotesRichTextTableDim rowcount As IntegerDim colcount As IntegerIf rtnav.FindFirstElement(RTELEM_TYPE_TABLE) ThenSet tbl = rtnav.GetElementrowcount = tbl.RowCount - 1colcount = tbl.ColumnCount - 1Redim (rowcount, colcount)For i% = 0 To rowcountFor j% = 0 To colcountCall rtnav.FindNextElement(RTELEM_TYPE_TABLECELL)Call rtrange.SetBegin(rtnav)If j% = colcount ThenCall rtf.AppendText(rtrange.TextParagraph )ElseCall rtf.AppendText(rtrange.TextParagraph & delimiter$)End IfNextIf i% < rowcount Then'生成新的段落Call rtf.AddNewline(1)End IfNextElseMessagebox "富文本域中沒(méi)有表格"Exit SubEnd IfCall tbl.RemoveCall doc.Save(True, True)Call uidoc.Close(True)Call ws.EditDocument(False,doc) End Sub

運(yùn)行結(jié)果如下圖:


圖 2. 文本格式


圖 3. 表格格式
?

總結(jié)

通過(guò)以上本文的介紹和示例及代碼分析,相信讀者對(duì)如何操作 Notes 富文本域已經(jīng)有了了解,我們可以看到 LotusScript. 的強(qiáng)大功能,通過(guò)靈活運(yùn)用適當(dāng)?shù)念?lèi),可以完成很多我們認(rèn)為不能完成的功能,希望本文對(duì)讀者有所啟發(fā)和幫助。

超強(qiáng)干貨來(lái)襲 云風(fēng)專(zhuān)訪:近40年碼齡,通宵達(dá)旦的技術(shù)人生

總結(jié)

以上是生活随笔為你收集整理的利用 LotusScript 灵活操作 Lotus Notes 富文本域的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 夜色网 | 久久国内 | www.啪啪 | 日本一区高清 | 91久久极品少妇xxxxⅹ软件 | 一级艳片新婚之夜 | 亚洲成人精品视频 | 嫩草免费视频 | 亚洲一区二区偷拍 | 国产欧美日韩精品区一区二污污污 | 懂色中文一区二区在线播放 | 这里只有精品国产 | 精品人伦一区二区三区蜜桃免费 | 日韩人妻精品在线 | 久久中文字幕在线观看 | 日韩精品一区二区在线 | 国产三区四区视频 | 久久久欧美精品sm网站 | 亚洲成人免费在线视频 | 日韩二区三区四区 | a视频免费观看 | 欧美激情精品久久久久久 | 国产又粗又猛又黄 | 高h捆绑拘束调教小说 | 精品国产一区二区三区四区阿崩 | 大肉大捧一进一出好爽视频 | 韩国精品久久久 | 911亚洲精选 | 成人xxxxx| 久热国产在线 | 国产日韩综合 | 欧美一级性 | 日本αv | 成人午夜免费福利视频 | 五月天爱爱 | 尤物网站在线观看 | 日本黄色精品 | 91精品国产综合久久久久久 | 99热国产在线观看 | 奇米精品一区二区三区四区 | 就去吻综合 | а天堂中文在线官网 | 亚洲最大视频网站 | 欧美成人短视频 | 欧美性猛烈 | 欧美日韩国产一区二区三区在线观看 | 91免费 看片 | 91精品国产成人观看 | 免费av电影网址 | 少妇人妻互换不带套 | 国产成人免费视频网站 | 亚洲插插| 在线国产网站 | 性淫bbwbbwbbw| 亚洲AV成人午夜无码精品久久 | 国产香蕉尹人视频在线 | 中文在线中文资源 | 国产69久久精品成人看 | 一级a毛片免费观看久久精品 | 香蕉久久夜色精品升级完成 | 肉色欧美久久久久久久免费看 | 国产美女免费视频 | 一区二区自拍 | 天天综合天天做天天综合 | 亚洲系列中文字幕 | 国产精品亚洲第一 | 精品在线免费视频 | 韩国三级做爰视频 | 午夜视频福利在线 | 国产女同视频 | 欧美精品亚洲精品 | 国产激情综合 | 夜夜操网站 | 亚洲无码乱码精品国产 | 在线视频中文字幕 | 一二区精品 | 91伦理| 在线看片网站 | 四虎国产视频 | 亚洲欧美国产高清va在线播放 | 无码人妻久久一区二区三区蜜桃 | 午夜寂寞影院在线观看 | 亚洲九九| 亚洲成年 | 日韩精品视频播放 | 国产又粗又猛又爽又黄的视频小说 | 深夜福利网站 | 一区二区三区观看 | 最好看的中文字幕国语电影mv | 怡红院成人网 | av影视天堂 | 人体裸体bbbbb欣赏 | 成人av高清在线观看 | 九九热在线精品 | 五月婷婷婷婷 | 91视频入口 | 久久久久高清 | 午夜在线视频观看 | 怡红院综合网 |