日韩性视频-久久久蜜桃-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ò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产丰满美女做爰 | 97精品一区二区视频在线观看 | 97视频在线 | 秋霞影院午夜丰满少妇在线视频 | 浪潮av色| 人妻 日韩精品 中文字幕 | 天堂影院一区二区 | 免费日韩精品 | 老牛影视少妇在线观看 | 日韩精品视频一区二区在线观看 | 国产第100页 | 大肉大捧一进一出好爽 | 无码人妻丰满熟妇精品区 | 非洲黄色片 | 性网址| 国产真实生活伦对白 | 在线你懂的视频 | 蜜桃视频一区二区三区在线观看 | av在线操 | 日本在线小视频 | 性视频欧美 | 在线视频 亚洲 | 18禁肉肉无遮挡无码网站 | 大尺度做爰呻吟舌吻情头 | 91视频www | 女性裸体下面张开 | 亚洲不卡在线视频 | 天美麻花果冻视频大全英文版 | 久久激情久久 | 日本三不卡 | 国产成人欧美 | 高跟91娇喘| 国产精品久久网站 | av手机免费看| 欧美一区二区黄色 | 米奇久久 | 天天干干天天 | 欧美不卡高清 | 亚洲精品久久视频 | 全黄一级裸片视频 | 日韩骚片| 亚洲av永久无码精品一区二区国产 | 亚洲AV无码成人精品区麻豆 | 女性喷水视频 | 美国做爰xxxⅹ性视频 | 日韩欧美一区二区免费 | 香蕉狠狠爱视频 | 香港三级日本三级 | av中文字幕免费观看 | 亚洲精品一区二区三区四区五区 | 一级香蕉视频在线观看 | 奶波霸巨乳一二三区乳 | 视频成人免费 | 久久在线精品视频 | 中文字幕人妻一区二区在线视频 | 亚洲a v网站 | 国产黄色高清视频 | 99热这里只| 四十路av | 青青青av | 久久免费片 | 亚洲国产精品99 | 三级国产在线 | 日韩一区二区精品 | 婷婷一级片 | 免费黄色片视频 | 国产农村妇女精品一二区 | 欧美日免费 | 人人看人人草 | 国产女主播一区 | 欧美又粗又长又爽做受 | 亚洲www视频 | 日韩超碰| 亚洲黄色录像片 | 久久久夜色精品亚洲 | 伊人96 | 亚洲裸体网站 | 午夜视频h | 黄色不卡视频 | 99国内揄拍国内精品人妻免费 | 香蕉久久一区二区三区 | 夜久久久 | 看片网站在线观看 | 久久国产精品久久国产精品 | 亚洲嫩草影院 | 羞羞漫画在线播放 | 麻豆影视在线观看 | 丰满少妇毛片 | 亚洲AV无码国产精品 | 可以免费观看av的网站 | 91夫妻视频 | 亚洲av无码一区二区三区网站 | 性歌舞团一区二区三区视频 | 偷拍精品一区二区三区 | 久草国产视频 | 三级网站在线看 | 色干网 | 免费在线观看日韩 | 国产在线喷水 |