Foxtable(狐表)用户栏目专家坐堂 → 自动调整最下方的一行的高度,以适用表高的代码应该怎么写?


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

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

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


加好友 发短信
等级:四尾狐 帖子:901 积分:8247 威望:0 精华:0 注册:2012/10/19 13:55:00
自动调整最下方的一行的高度,以适用表高的代码应该怎么写?  发帖心情 Post By:2019/5/10 15:47:00 [只看该作者]

自动调整最后一列的宽度,以适用表宽的代码是:
Tables("表A").ExtendLastCol = True

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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:901 积分:8247 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2019/5/10 16:34:00 [只看该作者]


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


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

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



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


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

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/5/10 18:41:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:901 积分:8247 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点甜)比较麻烦,参考 http://www...  发帖心情 Post By:2019/5/11 10:17:00 [只看该作者]

已参考,您帮忙看下该怎么修改?

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



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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:901 积分:8247 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)把窗口表最大打印行数去掉Dim fdr1 A...  发帖心情 Post By:2019/5/11 13:52:00 [只看该作者]

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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:901 积分:8247 威望:0 精华:0 注册:2012/10/19 13:55:00
  发帖心情 Post By:2019/5/11 14:39:00 [只看该作者]

求帮助

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


加好友 发短信
等级:超级版主 帖子:106209 积分:540168 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:四尾狐 帖子:901 积分:8247 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)……ndoc.Body.Children.Add(ra_3)nD...  发帖心情 Post By:2019/5/11 16:03:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下: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("开piao人") = e.Form.Controls("开piao人").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

 回到顶部
总数 13 1 2 下一页