以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 点击按钮显示快捷菜单 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173107)
|
-- 作者:cd_tdh
-- 发布时间:2021/11/15 17:03:00
-- 点击按钮显示快捷菜单
已解决
[此贴子已经被作者于2021/11/15 17:15:01编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/11/15 17:16:00
--
设计的是系统菜单,不是窗口菜单,这是2种完全不同的用法,不能混用。
|
-- 作者:cd_tdh
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间: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
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/11/16 10:56:00
--
使用的模板都不一样,怎么可以一个文件?至少2个文件
做筛选分2次处理,先筛选处理"是否使用工程款" = True的数据,然后在处理=false的数据
|
-- 作者:cd_tdh
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/11/16 11:57:00
--
快捷菜单不要使用按钮
Strip.Items.Add("打印凭证","打印凭证","new.ico", StripItemTypeEnum.MenuItem)
|
-- 作者:cd_tdh
-- 发布时间: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编辑过]
|
-- 作者:有点蓝
-- 发布时间:2021/11/16 16:37:00
--
代码编辑器第一行放3个单引号
wrt.ReplaceOne("[否工程款]","□")
|