以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  自动调整最下方的一行的高度,以适用表高的代码应该怎么写?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=134857)

--  作者:fengwenliuyan
--  发布时间:2019/5/10 15:47:00
--  自动调整最下方的一行的高度,以适用表高的代码应该怎么写?
自动调整最后一列的宽度,以适用表宽的代码是:
Tables("表A").ExtendLastCol = True

那么,求:
自动调整最下方的一行的高度,以适用表高的代码应该怎么写?

--  作者:有点甜
--  发布时间:2019/5/10 16:04:00
--  

参考代码

 

Dim t = Tables("表A").grid
Dim rsum As Double = 0
For i As Integer = 0 To t.Rows.count-2
    rsum += t.Rows(i).heightdisplay
Next

If t.height > rsum Then
    t.Rows(t.Rows.count-1).height = t.height - rsum
End If


--  作者:fengwenliuyan
--  发布时间:2019/5/10 16:34:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:11111111.png
图片点击可在新窗口打开查看


最后一行补齐表高,这个已经ok了,
还有一个问题,

遇到同一批出库产品,需要出库编号相同的,打印3行,但一页却只能打得下一行
剩余两页怎么做到:窗口中的除“表边框内的内容”以外的全部内容都与第一页相同,
也就是:每页只添加了剩余要打印的表边框内的内容



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:打印相关.zip


[此贴子已经被作者于2019/5/10 16:38:27编辑过]

--  作者:有点甜
--  发布时间:2019/5/10 18:41:00
--  

比较麻烦,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=96192&skin=0

 


--  作者:fengwenliuyan
--  发布时间:2019/5/11 10:17:00
--  回复:(有点甜)比较麻烦,参考 http://www...
已参考,您帮忙看下该怎么修改?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:打印相关2.zip



--  作者:有点蓝
--  发布时间:2019/5/11 11:31:00
--  
把窗口表最大打印行数去掉

Dim fdr1 As DataRow = DataTables("意和打印记录表").Find("日期 >= #" & d1.Date & "# and 日期 < #" & d1.Date.adddays(1) & "#")
if fdr1 isnot nothing then fdr1("次数") += 1

……

\'针式打印机的连进连出打印:
e.Form.Page.LeftMargin = 0 \'设置左边距
e.Form.Page.RightMargin = 0 \'设置右边距
e.Form.Page.TopMargin = 0 \'设置上边距
e.Form.Page.BottomMargin = 0 \'设置下边距
Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.PageSetting.Width = 218  \'纸张宽度为218毫米
doc.PageSetting.Height = 94  \'纸张高度为94毫米
doc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
Dim ndoc As new PrintDoc
Dim ra_1 As new prt.RenderArea
Dim ra_2 As new prt.RenderArea
Dim ra_3 As new prt.RenderArea
Dim flag As Boolean = False

For Each c As object In Doc.Body.Children
    If c.Gettype.name Like "*RenderText*" Then
        If flag = False Then
            ra_1.Children.Add(c.Clone)
            Dim nrt = c.clone
            nrt.height = 0
            ra_2.Children.Add(nrt)
        Else
            ra_2.Children.Add(c.clone)
        End If
    ElseIf c.Gettype.name Like "*RenderTable*" Then
        ra_3.Children.Add(c.Clone)
        Dim nrt = c.clone
        nrt.height = 0
        ra_2.Children.Add(nrt)
        flag = True
    End If
Next
ndoc.Body.Children.Add(ra_3)
nDoc.PageHeader = ra_1 \'作为页眉使用
ndoc.PageFooter = ra_2
ndoc.PageSetting.LeftMargin = 0 \'设置左边距
ndoc.PageSetting.RightMargin = 0 \'设置右边距
ndoc.PageSetting.TopMargin = 0 \'设置上边距
ndoc.PageSetting.BottomMargin = 0 \'设置下边距
ndoc.PageSetting.Width = 218  \'纸张宽度为218毫米
ndoc.PageSetting.Height = 94  \'纸张高度为94毫米
ndoc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
ndoc.Preview()


--  作者:fengwenliuyan
--  发布时间:2019/5/11 13:52:00
--  回复:(有点蓝)把窗口表最大打印行数去掉Dim fdr1 A...
ndoc.Body.Children.Add(ra_3)
nDoc.PageHeader = ra_1 \'作为页眉使用
nDoc.PageFooter = "第[PageNo]页,共[PageCount]页"
ndoc.PageFooter = ra_2
ndoc.PageSetting.LeftMargin = 0 \'设置左边距
ndoc.PageSetting.RightMargin = 0 \'设置右边距
ndoc.PageSetting.TopMargin = 0 \'设置上边距
ndoc.PageSetting.BottomMargin = 0 \'设置下边距
ndoc.PageSetting.Width = 218  \'纸张宽度为218毫米
ndoc.PageSetting.Height = 94  \'纸张高度为94毫米
ndoc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
ndoc.Preview()


不知道红色的这句应该怎么改?

--  作者:fengwenliuyan
--  发布时间:2019/5/11 14:39:00
--  
求帮助
--  作者:有点蓝
--  发布时间:2019/5/11 14:56:00
--  
……
ndoc.Body.Children.Add(ra_3)
nDoc.PageHeader = ra_1 \'作为页眉使用
Dim rt = New prt.RenderText \'设置文本对象的内容
rt.Text = "第[PageNo]页,共[PageCount]页" \'设置文本内容
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Right
rt.Style.Padding.Bottom = 2
rt.Style.Padding.right= 10
rt.Y = "Prev.Bottom + 2"
rt.Style.FontSize = 8
ra_2.Children.Add(rt)
ndoc.PageFooter = ra_2
ndoc.PageSetting.LeftMargin = 0 \'设置左边距
ndoc.PageSetting.RightMargin = 0 \'设置右边距
ndoc.PageSetting.TopMargin = 0 \'设置上边距
ndoc.PageSetting.BottomMargin = 0 \'设置下边距
ndoc.PageSetting.Width = 218  \'纸张宽度为218毫米
ndoc.PageSetting.Height = 94  \'纸张高度为94毫米
ndoc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
ndoc.Preview()


--  作者:fengwenliuyan
--  发布时间:2019/5/11 16:03:00
--  回复:(有点蓝)……ndoc.Body.Children.Add(ra_3)nD...

图片点击可在新窗口打开查看此主题相关图片如下:121.png
图片点击可在新窗口打开查看



图片点击可在新窗口打开查看此主题相关图片如下:122.png
图片点击可在新窗口打开查看


上面第二幅图中,红色部分空挡区域,应该怎么去除?

Dim d1 As Date = e.Form.Controls("出库日期").Text
Dim fdr1 As DataRow = DataTables("意和打印记录表").Find("日期 >= #" & d1.Date & "# and 日期 < #" & d1.Date.adddays(1) & "#")
If fdr1 IsNot Nothing Then fdr1("次数") += 1

For Each r As Row In Tables("意和打印窗口_出库明细表")
    r("出库编号") = e.Form.Controls("出库编号").Text
    r("出库日期") = e.Form.Controls("出库日期").value
    r("开票人") = e.Form.Controls("开票人").Text
    r("送货司机") = e.Form.Controls("送货司机").Text
Next

\'针式打印机的连进连出打印:
e.Form.Page.LeftMargin = 0 \'设置左边距
e.Form.Page.RightMargin = 0 \'设置右边距
e.Form.Page.TopMargin = 0 \'设置上边距
e.Form.Page.BottomMargin = 0 \'设置下边距
Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.PageSetting.Width = 218  \'纸张宽度为218毫米
doc.PageSetting.Height = 94  \'纸张高度为94毫米
doc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
Dim ndoc As new PrintDoc
Dim ra_1 As new prt.RenderArea
Dim ra_2 As new prt.RenderArea
Dim ra_3 As new prt.RenderArea
Dim flag As Boolean = False

For Each c As object In Doc.Body.Children
    If c.Gettype.name Like "*RenderText*" Then
        If flag = False Then
            ra_1.Children.Add(c.Clone)
            Dim nrt = c.clone
            nrt.height = 0
            ra_2.Children.Add(nrt)
        Else
            ra_2.Children.Add(c.clone)
        End If
    ElseIf c.Gettype.name Like "*RenderTable*" Then
        ra_3.Children.Add(c.Clone)
        Dim nrt = c.clone
        nrt.height = 0
        ra_2.Children.Add(nrt)
        flag = True
    End If
Next
ndoc.Body.Children.Add(ra_3)
nDoc.PageHeader = ra_1 \'作为页眉使用
Dim rt = New prt.RenderText \'设置文本对象的内容
rt.Text = "第[PageNo]页,共[PageCount]页" \'设置文本内容
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Right
rt.Style.Padding.Bottom = 2
rt.Style.Padding.right= 10
rt.Y = "Prev.Bottom + 2"
rt.Style.FontSize = 8
ra_2.Children.Add(rt)
ndoc.PageFooter = ra_2
ndoc.PageSetting.LeftMargin = 0 \'设置左边距
ndoc.PageSetting.RightMargin = 0 \'设置右边距
ndoc.PageSetting.TopMargin = 0 \'设置上边距
ndoc.PageSetting.BottomMargin = 0 \'设置下边距
ndoc.PageSetting.Width = 218  \'纸张宽度为218毫米
ndoc.PageSetting.Height = 94  \'纸张高度为94毫米
ndoc.AutoRotate = False  \'如果纸张的宽度超过高度,要加上这行代码
ndoc.Preview()
Dim fnt As New Font("黑体",9,FontStyle.Bold)
CurrentTable.Font = fnt

For Each dr1 As DataRow In DataTables("出库明细表").Select("[打印_意和] = true")
    If dr1 Is Nothing Then Return
    If dr1("出库已选_部分") = True Then
        dr1("打印_意和") = False
        dr1("状态_半开") = True
        dr1("出库已选_部分") = False
    ElseIf dr1("出库已选_全部") = True Then
        dr1("打印_意和") = False
        dr1("状态_全开") = True
        dr1("状态_半开") = False
        dr1("出库已选_全部") = False
    End If
Next

Forms("意和打印窗口").Close()

Dim fnt1 As New Font("宋体",9,FontStyle.Regular)
CurrentTable.Font = fnt1