以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  窗口打印问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=40571)

--  作者:realredred
--  发布时间:2013/9/23 20:04:00
--  窗口打印问题
在窗口做了一个打印按键
以快速打印效果來做打印
想设好打印页边距 四边都是 预留5MM

Dim Result As DialogResult
Result = MessageBox.Show("是否确定打印?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    \'Tables("排产窗_Table1").Print(True,True)
\'With Tables("排产窗_Table1").PrintInfo
    \'.PaperKind = 0 \'纸张类型设为自定义
    \'.PaperWidth = 200 \'宽度设为250毫米
    \'.PaperHeight = 280 \'高度设为120毫米
\'End With

e.Form.Page.LeftMargin = 5 \'设置左边距
e.Form.Page.RightMargin = 5 \'设置右边距
e.Form.Page.TopMargin = 5 \'设置上边距
e.Form.Page.BottomMargin = 5 \'设置下边距
Tables("排产窗_Table1").DirectPrint(True,True) \'打印预览
Else
    MessageBox.Show("取消打印!")
End If

可以打印,但页边设置沒有效果,是不是设置错误呢?请指导一下.


--  作者:有点甜
--  发布时间:2013/9/23 20:11:00
--  
 设置窗口的打印和直接打印表,没有关联的。

 这句代码是直接打印表的。
Tables("排产窗_Table1").DirectPrint(True,True) \'打印预览

 。如果要打印容器/窗口,参考下面的代码。


--  作者:realredred
--  发布时间:2013/9/23 20:46:00
--  
小甜甜


用容器式打印 试过的
但表的标题只有第一页出现,其他页沒有标题
而且打印色采会走色的.

Dim Result As DialogResult
Result = MessageBox.Show("是否确定打印?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then

e.Form.Page.LeftMargin = 5 \'设置左边距
e.Form.Page.RightMargin = 5 \'设置右边距
e.Form.Page.TopMargin = 5 \'设置上边距
e.Form.Page.BottomMargin = 5 \'设置下边距


Dim grp As WinForm.GroupBox = e.Form.Controls("GroupBox1")
Dim doc As PrintDoc = e.Form.GernatePrintDoc(grp)
doc.Preview()
Else
    MessageBox.Show("取消打印!")
End If

第一页 标题完美显示

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

第二页开始,标题不出现了

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


--  作者:有点甜
--  发布时间:2013/9/23 20:51:00
--  
 可以对得到的doc对象进行进一步处理的,参考专业报表。


--  作者:realredred
--  发布时间:2013/9/24 0:10:00
--  

找到一个设置表头的方法是这个

 

Dim doc As New PrintDoc
Dim
tb As Table = Tables("排产窗_Table1")
Dim
prs As Integer = 25
For
p As Integer = 0 To math.Ceiling(tb.Rows.Count / prs) - 1
    Dim
rt As New prt.RenderTable
    rt.Style.Gridlines.All = New prt.Linedef(Color.Gray)
    rt.CellStyle.Spacing.All =
0.5
    tb.CreateReportHeader(rt,
False) \'生成多层表头

    For c As Integer = 0 To tb.Cols.Count - 1
       
For r As Integer = p * prs To math.min(tb.Rows.Count - 1,( p + 1) * prs - 1)
            rt.Cells(r - p * prs + tb.HeaderRows, c).Text = tb.rows(r)(c)

        Next
    Next
    If
p < math.Ceiling(tb.Rows.Count / prs) - 1
        rt.BreakAfter = prt.BreakEnum.Page

    End
If
    doc.Body.Children.Add(rt)

Next

doc.Preview()

 

 

这个可以每页都有表头,但相对,图片不显示,也不能设置页边距

有点头大了....


--  作者:有点甜
--  发布时间:2013/9/24 22:39:00
--  
 上一个例子吧,很简单的。
--  作者:realredred
--  发布时间:2013/9/24 23:54:00
--  

麻烦小甜甜了

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:快速打印边距.rar


--  作者:有点甜
--  发布时间:2013/9/25 21:54:00
--  
 简单的方法,代码不变,同样是打印容器,设置table控件的属性 最小最大打印行数 ,就行了。

Dim Result As DialogResult
Result = MessageBox.Show("是否确定打印?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then

e.Form.Page.LeftMargin = 5 \'设置左边距
e.Form.Page.RightMargin = 5 \'设置右边距
e.Form.Page.TopMargin = 5 \'设置上边距
e.Form.Page.BottomMargin = 5 \'设置下边距


Dim grp As WinForm.GroupBox = e.Form.Controls("GroupBox1")
Dim doc As PrintDoc = e.Form.GernatePrintDoc(grp)
doc.Preview()
Else
    MessageBox.Show("取消打印!")
End If

--  作者:realredred
--  发布时间:2013/9/26 0:05:00
--  

用容器打印,在TABLE设最大打印行数,可以有標题了

但出现了两页空白,而且双行间色沒有了

 

用快速打印有双行间色,但不懂设默认边距.

 

上面是容器打印

下面是快速打印


图片点击可在新窗口打开查看此主题相关图片如下:未命名2 拷贝.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2013-9-26 0:05:43编辑过]

--  作者:有点甜
--  发布时间:2013/9/26 22:45:00
--  
 呃……出现两页空白,应该是你设置的最大最小行数错了,都设置成10看看。

 至于双行间色,可以用代码控制某一行的颜色,获取doc对象,对doc进行一下处理就行。是专业报表里面的内容。

 楼主,先将就下用吧。