免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6115 | 回复: 4

[Lotus] [求助]请教高手,关于用LotusScript语言画表格的代码 [复制链接]

论坛徽章:
0
发表于 2008-04-29 16:09 |显示全部楼层
最近遇到一个编程上的小问题,想在这里请教做过LotusNotes开发的达人.
想用LotusScript画个表格,表格的ROW不固定,要求用LotusScript代码画,目前我知道用NotesRichTextItem来做,但是做出来的看不到表格,不知道是不是哪里没有做对,另附Source如下:

[Source]
Sub Click(Source As Button)
        
        Dim newDoc As NotesDocument
        Dim rtf As NotesRichTextItem
        Dim nav As NotesRichTextNavigator
        Dim tbl As NotesRichTextTable
        Dim strBody As String
        
        Set newDoc = New NotesDocument(curDB)
        strBody="Sample: Drawing a table"
        
        Set rtf = newDoc.CreateRichTextItem ("Body")
        
        'setup text styles used in document
        Dim columnHeaderStyle As NotesRichTextStyle
        Set columnHeaderStyle = session.CreateRichTextStyle( )
        columnHeaderStyle.Bold = True
        columnHeaderStyle.FontSize = 10
        columnHeaderStyle.NotesFont = rtf.GetNotesFont("Arial", True)
        
        Dim dataStyle As NotesRichTextStyle
        Set dataStyle = session.CreateRichTextStyle( )
        dataStyle.Bold = False
        dataStyle.FontSize = 9
        
        'Define an array of paragraph styles, which will set the width and alignment of each table column.
        Dim i As Integer, k As Integer
        Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
        For i = 0 To 4
                Set columnStyles(i) = session.CreateRichTextParagraphStyle
                columnStyles(i).LeftMargin = 0
                columnStyles(i).FirstLineLeftMargin = 0
        Next
        columnStyles(0).RightMargin = 3 * RULER_ONE_CENTIMETER
        columnStyles(0).Alignment = ALIGN_LEFT
        columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
        columnStyles(1).Alignment = ALIGN_LEFT
        columnStyles(2).RightMargin = 4 * RULER_ONE_CENTIMETER
        columnStyles(2).Alignment = ALIGN_LEFT
        columnStyles(3).RightMargin = 4 * RULER_ONE_CENTIMETER
        columnStyles(4).Alignment = ALIGN_LEFT
        columnStyles(4).RightMargin = 1 * RULER_ONE_CENTIMETER
        columnStyles(4).Alignment = ALIGN_LEFT
        
        Dim headerColor As NotesColorObject
        Dim dataColor As NotesColorObject
        Set headerColor = session.CreateColorObject
        Call headerColor.SetRGB(239,239,239)
        Set dataColor = session.CreateColorObject
        Call headerColor.SetRGB(255,255,255)
        
        'add original note
        rtf.AppendText strBody
        rtf.AddNewline 1, True
        
        'Create an empty table
        Call rtf.AppendTable(5,5,,,columnStyles)
        
        'Create a navigator to position the text insertion point
        Set nav = rtf.CreateNavigator( )
        nav.FindLastElement RTELEM_TYPE_TABLE
        Set tbl = nav.GetElement
        
        'Set table to use different color for the top and the left column
        tbl.Style = TABLESTYLE_TOP
        tbl.SetColor headerColor
        tbl.SetAlternateColor dataColor
        
        'insert header
        rtf.AppendStyle columnHeaderStyle
        nav.FindNextElement RTELEM_TYPE_TABLECELL
        rtf.BeginInsert nav
        rtf.AppendText "Col_1"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_2"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_3"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_4"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_5"
        rtf.EndInsert
        
        rtf.AppendStyle dataStyle
        
        For i = 0 To 3
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert                 
        Next
        
End Sub
[Source]

论坛徽章:
0
发表于 2008-04-30 14:30 |显示全部楼层
唉,咋就没人来解答捏?

论坛徽章:
0
发表于 2008-05-01 19:14 |显示全部楼层
我觉得这个问题蛮有趣的。通看了你的源代码后,你有没有发现在这个代码中你用到的都是后台类,也就是说即使你的代码是作出了你要的表格,这个表格也是不会显示的。

我有个想法,你在你的代码上加上保存文档的函数,然后重新打开这个文档看看有没有效果。

这个想法我也没有试过。

呵呵~

论坛徽章:
0
发表于 2008-05-04 10:32 |显示全部楼层
原帖由 sdlfly2000 于 2008-5-1 19:14 发表
我觉得这个问题蛮有趣的。通看了你的源代码后,你有没有发现在这个代码中你用到的都是后台类,也就是说即使你的代码是作出了你要的表格,这个表格也是不会显示的。

我有个想法,你在你的代码上加上保存文档的 ...


楼上的兄弟,正如你所说,我做的表格应该是没有问题,就是显示不出来,因为本人是刚开始学习LotusNotes开发编程,所以也不知道如何才能将表格显出出来.

我的想法是想让这个后台做的表格,能够在客户端的RichText类型的Field中显示出来,楼上的兄弟能否写个代码或是例子之类的供我参考一下!谢谢了!

论坛徽章:
0
发表于 2008-09-24 16:37 |显示全部楼层
下面是在你的代码上修改的,已测试。
不过,在表格中间的格不能添加按钮,只能在最后添加,很遗憾。
这段代码是在VIEW上的按钮。按钮按下后VIEW中就会出现新建的文档。

Sub Click(Source As Button)
       
        Dim ws As New NotesUIWorkspace
        Dim session As New NotesSession
        Dim curDB As NotesDatabase
       
        Dim newDoc As NotesDocument
        Dim rtf As NotesRichTextItem
        Dim nav As NotesRichTextNavigator
        Dim tbl As NotesRichTextTable
        Dim strBody As String
       
        Set curDB = session.CurrentDatabase
       
        Set newDoc = New NotesDocument(curDB)
       
        newDoc.form = "testform"
       
       
        strBody="Sample: Drawing a table"
       
        Set rtf = newDoc.CreateRichTextItem ("Body")
       
        'setup text styles used in document
        Dim columnHeaderStyle As NotesRichTextStyle
        Set columnHeaderStyle = session.CreateRichTextStyle( )
        columnHeaderStyle.Bold = True
        columnHeaderStyle.FontSize = 10
        columnHeaderStyle.NotesFont = rtf.GetNotesFont("Arial", True)
       
        Dim dataStyle As NotesRichTextStyle
        Set dataStyle = session.CreateRichTextStyle( )
        dataStyle.Bold = False
        dataStyle.FontSize = 9
       
        'Define an array of paragraph styles, which will set the width and alignment of each table column.
        Dim i As Integer, k As Integer
        Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
        For i = 0 To 4
                Set columnStyles(i) = session.CreateRichTextParagraphStyle
                columnStyles(i).LeftMargin = 0
                columnStyles(i).FirstLineLeftMargin = 0
        Next
        columnStyles(0).RightMargin = 3 * RULER_ONE_CENTIMETER
        columnStyles(0).Alignment = ALIGN_LEFT
        columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
        columnStyles(1).Alignment = ALIGN_LEFT
        columnStyles(2).RightMargin = 4 * RULER_ONE_CENTIMETER
        columnStyles(2).Alignment = ALIGN_LEFT
        columnStyles(3).RightMargin = 4 * RULER_ONE_CENTIMETER
        columnStyles(4).Alignment = ALIGN_LEFT
        columnStyles(4).RightMargin = 1 * RULER_ONE_CENTIMETER
        columnStyles(4).Alignment = ALIGN_LEFT
       
        Dim headerColor As NotesColorObject
        Dim dataColor As NotesColorObject
        Set headerColor = session.CreateColorObject
        Call headerColor.SetRGB(239,239,239)
        Set dataColor = session.CreateColorObject
        Call dataColor.SetRGB(255,255,255)
       
        'add original note
        rtf.AppendText strBody
        rtf.AddNewline 1, True
       
        'Create an empty table
        Call rtf.AppendTable(5,5,,,columnStyles)
       
        'Create a navigator to position the text insertion point
        Set nav = rtf.CreateNavigator( )
        nav.FindLastElement RTELEM_TYPE_TABLE
        Set tbl = nav.GetElement
       
        'Set table to use different color for the top and the left column
        tbl.Style = TABLESTYLE_TOP
        tbl.SetColor headerColor
        tbl.SetAlternateColor dataColor
       
        'insert header
        rtf.AppendStyle columnHeaderStyle
        nav.FindNextElement RTELEM_TYPE_TABLECELL
        rtf.BeginInsert nav
        rtf.AppendText "Col_1"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_2"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_3"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_4"
        rtf.EndInsert
        nav.FindNextElement
        rtf.BeginInsert nav
        rtf.AppendText "Col_5"
        rtf.EndInsert
       
        rtf.AppendStyle dataStyle
       
        For i = 0 To 3
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert
                nav.FindNextElement
                rtf.BeginInsert nav
                rtf.AppendText(i)
                rtf.EndInsert                 
        Next
       
        Call newDoc.Save(True,True)
        Call ws.ViewRefresh
       
End Sub

[ 本帖最后由 lyg810928 于 2008-9-24 16:42 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP