Foxtable(狐表)用户栏目专家坐堂 → 窗口打印问题


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

主题:窗口打印问题

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


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
窗口打印问题  发帖心情 Post By: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

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


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


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

 设置窗口的打印和直接打印表,没有关联的。

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

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


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


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By: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
图片点击可在新窗口打开查看


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


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

 可以对得到的doc对象进行进一步处理的,参考专业报表。


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


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By: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()

 

 

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

有点头大了....


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


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

 上一个例子吧,很简单的。

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


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/9/24 23:54:00 [只看该作者]

麻烦小甜甜了

 

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


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


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


加好友 发短信
等级:一尾狐 帖子:488 积分:3358 威望:0 精华:0 注册:2013/4/17 21:14:00
  发帖心情 Post By:2013/9/26 0:05:00 [只看该作者]

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

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

 

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

 

上面是容器打印

下面是快速打印


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

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


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

 呃……出现两页空白,应该是你设置的最大最小行数错了,都设置成10看看。

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

 楼主,先将就下用吧。

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