以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请甜老师帮忙改一下,谢谢  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=107935)

--  作者:xxfoxtable
--  发布时间:2017/10/12 22:44:00
--  请甜老师帮忙改一下,谢谢
Dim doc As New PrintDoc() \'定义一个报表
\'Doc.PrinterName = e.Form.Controls("ComboBox1").Value \'指定打印机
doc.PageSetting.Width = 40 \'纸张宽度为100毫米
doc.PageSetting.Height = 30 \'纸张高度为50毫米
Doc.PageSetting.LeftMargin =0   \'设置左边距
Doc.PageSetting.RightMargin =0    \'设置右边距
Doc.PageSetting.TopMargin = 0      \'设置上边距
Doc.PageSetting.BottomMargin = 0 \'设置下边距
doc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码


doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
Dim ra As New prt.RenderArea
Dim rt As prt.RenderText
ra.Width =40   \'标签框架宽
ra.Height =30 \'标签框架高
ra.Style.Spacing.All = 1
ra.Style.Borders.All = New prt.Linedef(0.3, Color.black)
ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never
ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never
Doc.Body.ChildRen.Add(ra)
rt = New prt.RenderText
rt.Text = Tables("打印").current("产品名称")
rt.X = 2
rt.Y = 2
ra.Children.Add(rt)
rt = New prt.RenderText
rt.Text = "生产日期: " & Date.now
rt.X = 2
rt.Y = "Prev.Bottom + 2"
ra.Children.Add(rt)
If Tables("打印").current("是否有日期")=False
rt = New prt.RenderText
rt.Text = "保 质 期:"& Tables("打印").current("文本保质期")
rt.X = 2
rt.Y = "Prev.Bottom + 2"
ra.Children.Add(rt)
Else
rt = New prt.RenderText
rt.Text = "保 质 期:"& Tables("打印").current("保质期") &"天"
rt.X = 2
rt.Y = "Prev.Bottom + 2"
ra.Children.Add(rt)
End If

If Tables("打印").current("是否有日期")=False
rt = New prt.RenderText
rt.Text = "到期日期:"& format(Tables("打印").current("到期日期"),"yyyy-mm-dd")
rt.X = 2
rt.Y = "Prev.Bottom + 2"
ra.Children.Add(rt)
Else
rt = New prt.RenderText
rt.Text = "到期日期:"& format(date.now.AddDays(Tables("打印").current("保质期")),"yyyy-mm-dd")
rt.X = 2
rt.Y = "Prev.Bottom + 2"
ra.Children.Add(rt)
End If
rt = New prt.RenderText
rt.Text = "储存方法: " & Tables("打印").current("储存方法")
rt.X = 2
rt.Y = "Prev.Bottom + 2"
ra.Children.Add(rt)


Doc.Preview()
第一个问题,日期后面还有时间
第二个问题,怎么让产品名称,横向居中
第三个问题,怎么设置循环
第四个问题,某一条记录可能要打印三,或者四份,怎么设置

--  作者:有点甜
--  发布时间:2017/10/12 22:51:00
--  

1、这样写还有问题?

 

rt.Text = "到期日期:"& format(Tables("打印").current("到期日期"), "yyyy-MM-dd")

 

2、http://www.foxtable.com/webhelp/scr/1170.htm

 

3、代码 Tables("打印").current 改成 r,然后加上循环

 

For Each r As Row In Tables("打印").rows

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=104307

 

4、上传具体实例说明,哪些行需要打印多份,逻辑是什么?

 


--  作者:xxfoxtable
--  发布时间:2017/10/12 22:53:00
--  
份数加在了这行数据的最后面
--  作者:有点甜
--  发布时间:2017/10/12 22:57:00
--  
以下是引用xxfoxtable在2017/10/12 22:53:00的发言:
份数加在了这行数据的最后面

 

 

for i as integer = 1 to Tables("打印").current("份数")

    Dim ra As New prt.RenderArea


--  作者:xxfoxtable
--  发布时间:2017/10/12 22:58:00
--  
日期不知道为啥变成这样了
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

--  作者:有点甜
--  发布时间:2017/10/12 22:59:00
--  
回复5楼,改成 rt.Text = "到期日期:"& format(Tables("打印").current("到期日期"), "yyyy-MM-dd")
--  作者:xxfoxtable
--  发布时间:2017/10/12 23:16:00
--  

[此贴子已经被作者于2017/10/12 23:32:27编辑过]

--  作者:xxfoxtable
--  发布时间:2017/10/12 23:21:00
--  
找到原因了,是我的问题
--  作者:xxfoxtable
--  发布时间:2017/10/12 23:32:00
--  
打印按钮怎么能避免双击呢?
--  作者:有点甜
--  发布时间:2017/10/12 23:39:00
--  
以下是引用xxfoxtable在2017/10/12 23:32:00的发言:
打印按钮怎么能避免双击呢?

 

方法一:

 

e.sender.Enabled = False

\'打印代码

e.sender.Enabled = True

 

方法二:

 

static ptime As Date = Nothing
Dim sp As TimeSpan = Date.now - ptime
ptime = Date.now
If sp.TotalMilliseconds < 1000  Then \'间隔1000毫秒
    Return
End If

\'打印代码