Foxtable(狐表)用户栏目专家坐堂 → 点击按钮显示快捷菜单


  共有3831人关注过本帖树形打印复制链接

主题:点击按钮显示快捷菜单

帅哥哟,离线,有人找我吗?
cd_tdh
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3202 积分:21279 威望:0 精华:0 注册:2016/3/28 16:57:00
点击按钮显示快捷菜单  发帖心情 Post By:2021/11/15 17:03:00 [只看该作者]

已解决
[此贴子已经被作者于2021/11/15 17:15:01编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/15 17:16:00 [只看该作者]

设计的是系统菜单,不是窗口菜单,这是2种完全不同的用法,不能混用。


 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3202 积分:21279 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/11/16 9:27:00 [只看该作者]

开始就是搞混了,在请教一下老师,我勾选的数据有两种报表,根据"是否使用工程款"来判断使用那种报表,一次勾选了多行数据,怎么按照勾选的顺序来生成一个Pdf文件的报表呢?

Dim  rs As List(of Row) = Tables("委托支付管理").GetCheckedRows
If rs.Count > 0 Then  '如果存在符合条件的行
    Select Case e.StripItem.Name

        Case "支付委托"

            For Each  r As Row In rs '逐行生成报表
                If r("是否使用工程款") = True Then
                    Dim tm As String  =  ProjectPath &  "Attachments\工料机支付委托书工程款.docx" '指定模板文件
                    Dim fl1 As String =  ProjectPath &  "Reports\工料机支付委托书工程款.docx" '指定目标文件
                    Dim fl2 As String =  ProjectPath &  "Reports\工料机支付委托书工程款.pdf" '指定目标PDF文件
                    Dim wrt As New WordReport(Tables("委托支付管理"),tm,fl1) '定义一个WordReport
                Else
                    Dim tm As String  =  ProjectPath &  "Attachments\工料机支付委托书.docx" '指定模板文件
                    Dim fl1 As String =  ProjectPath &  "Reports\工料机支付委托书.docx" '指定目标文件
                    Dim fl2 As String =  ProjectPath &  "Reports\工料机支付委托书.pdf" '指定目标PDF文件
                    Dim wrt As New WordReport(Tables("委托支付管理"),tm,fl1) '定义一个WordReport
                   
                    'For Each  r As Row In rs '逐行生成报表
                        wrt.BuildOne(r)
                        r.Checked =False
                    Next
                    wrt.SaveToPDF(fl2) '保存为PDF文件
                    wrt.Quit() '退出
                    Dim Proc As New Process '打开PDF文件
                    Proc.File = fl2
                    Proc.Start()
                End If

        End Select
    Else
        MessageBox.Show("请先勾选你需要打印的数据!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
        Return
    End If

[此贴子已经被作者于2021/11/16 9:52:53编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/16 10:04:00 [只看该作者]

        Case "支付委托"

            For Each  r As Row In rs '逐行生成报表

Dim wrt As WordReport

Dim fl2 As String
                If r("是否使用工程款") = True Then
                    Dim tm As String  =  ProjectPath &  "Attachments\工料机支付委托书工程款.docx" '指定模板文件
                    Dim fl1 As String =  ProjectPath &  "Reports\工料机支付委托书工程款.docx" '指定目标文件
                    fl2 =  ProjectPath &  "Reports\工料机支付委托书工程款.pdf" '指定目标PDF文件
                    wrt = New WordReport(Tables("委托支付管理"),tm,fl1) '定义一个WordReport
                Else
                    Dim tm As String  =  ProjectPath &  "Attachments\工料机支付委托书.docx" '指定模板文件
                    Dim fl1 As String =  ProjectPath &  "Reports\工料机支付委托书.docx" '指定目标文件
                    fl2 =  ProjectPath &  "Reports\工料机支付委托书.pdf" '指定目标PDF文件
                    wrt = New WordReport(Tables("委托支付管理"),tm,fl1) '定义一个WordReport
                End If

                        wrt.BuildOne(r)
                        r.Checked =False
                    
                    wrt.SaveToPDF(fl2) '保存为PDF文件
                    wrt.Quit() '退出

Next

        End Select


 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3202 积分:21279 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/11/16 10:33:00 [只看该作者]

老师,这样生成出来的是一条数据一个pdf文件,不是勾选的所有数据一个文件,怎么修改?

        Case "支付委托"
            For Each  r As Row In rs '逐行生成报表
                Dim wrt As WordReport
                Dim fl2 As String
                If r("是否使用工程款") = True Then
                    Dim tm As String  =  ProjectPath &  "Attachments\工料机支付委托书工程款.docx" '指定模板文件
                    Dim fl1 As String =  ProjectPath &  "Reports\工料机支付委托书工程款.docx" '指定目标文件
                    fl2 =  ProjectPath &  "Reports\工料机支付委托书工程款.pdf" '指定目标PDF文件
                    wrt = New WordReport(Tables("委托支付管理"),tm,fl1) '定义一个WordReport
                Else
                    Dim tm As String  =  ProjectPath &  "Attachments\工料机支付委托书.docx" '指定模板文件
                    Dim fl1 As String =  ProjectPath &  "Reports\工料机支付委托书.docx" '指定目标文件
                    fl2 =  ProjectPath &  "Reports\工料机支付委托书.pdf" '指定目标PDF文件
                    wrt = New WordReport(Tables("委托支付管理"),tm,fl1) '定义一个WordReport
                End If
                wrt.BuildOne(r)
                r.Checked =False
                wrt.SaveToPDF(fl2) '保存为PDF文件
                wrt.Quit()    '退出
                Dim Proc As New Process '打开PDF文件
                Proc.File = fl2
                Proc.Start()  '打开
            Next

End Select

[此贴子已经被作者于2021/11/16 10:40:47编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/16 10:56:00 [只看该作者]

使用的模板都不一样,怎么可以一个文件?至少2个文件

做筛选分2次处理,先筛选处理"是否使用工程款" = True的数据,然后在处理=false的数据

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3202 积分:21279 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/11/16 11:37:00 [只看该作者]

我另外找方法处理吧,请老师看看动态增加窗口的快捷菜单,出来不对呢?图标不是在前面,后面标题和名称也没显示

Dim Strip As WinForm.Strip
Strip = e.Form.Strips.Add("快捷菜单1",  StripTypeEnum.ContextMenu)
Strip.Items.Add("打印凭证","打印凭证","new.ico", StripItemTypeEnum.Button)
Strip.Items.Add("打印委托","打印委托","Open.ico", StripItemTypeEnum.Button)

e.Form.Controls("Button1").ContextStrip = e.Form.Strips("快捷菜单1")

 


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20211116113635.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2021/11/16 11:39:32编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/16 11:57:00 [只看该作者]

快捷菜单不要使用按钮

Strip.Items.Add("打印凭证","打印凭证","new.ico", StripItemTypeEnum.MenuItem)

 回到顶部
帅哥哟,离线,有人找我吗?
cd_tdh
  9楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐精 帖子:3202 积分:21279 威望:0 精华:0 注册:2016/3/28 16:57:00
  发帖心情 Post By:2021/11/16 16:34:00 [只看该作者]

请教一下老师,word报表中的true和False怎么显示成这样带√的框和不带√的框,代码里面没法用特殊符号啊

我变通的话可以判断了来替换

            For Each  r As Row In rs '逐行生成报表
                If r("是否使用工程款") = True Then
                    wrt.ReplaceOne("[否工程款]",False)  '用代码替换复核人
                    wrt.ReplaceOne("[是工程款]",True)  '用代码替换复核人
                Else
                    wrt.ReplaceOne("[否工程款]",True)  '用代码替换复核人
                    wrt.ReplaceOne("[是工程款]",False)  '用代码替换复核人
                End If
                wrt.BuildOne(r)
                r.Checked =False
            Next

[此贴子已经被作者于2021/11/16 16:36:41编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/16 16:37:00 [只看该作者]

代码编辑器第一行放3个单引号

wrt.ReplaceOne("[否工程款]","
")

 回到顶部