Foxtable(狐表)用户栏目专家坐堂 → [求助]自动选择,逐行打印?


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

主题:[求助]自动选择,逐行打印?

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


加好友 发短信
等级:童狐 帖子:254 积分:1963 威望:0 精华:0 注册:2013/2/6 19:09:00
[求助]自动选择,逐行打印?  发帖心情 Post By:2013/3/11 23:46:00 [只看该作者]

窗口打印,自动选择,代码如下:

Dim sp As WinForm.SplitPanel = e.Form.Controls("SplitContainer1").Panel1
Dim doc As PrintDoc = e.Form.GernatePrintDoc(sp)
Dim t As Table = Tables("收费明细")
For i As Integer = 0 To t.Rows.Count -1
    If t.Rows(i)("打印状态") = 0 Then
        t.Position = i
        doc.Preview()
        Tables("收费明细").Current("打印状态") = True
        Exit For      
    End If
Next

 

出现的问题是:如果当前行是第3行,会先打第3行,同时返回第1行。打印顺序是3-1-2;不是1-2-3。

 

我的愿望是按打印按钮后,不管当前行是哪一行,首先返回"打印状态" = 0的第一行,然后逐行往下打。打完后点击按钮是不会继续打印的。

 

测试后发现执行顺序是:doc.Preview()-- t.Position = i-- Tables("收费明细").Current("打印状态") = True

和代码编写的顺序不符。

没办法,另加了个条件判断,达到了预想效果,最后修改代码如下:

Dim t As Table = Tables("SFMX")
For i As Integer = 0 To t.Rows.Count -1
    If t.Rows(i)("DY") = 0 Then
        t.Position = i
        Exit For
    End If
Next
Dim sp As WinForm.SplitPanel = e.Form.Controls("SplitContainer1").Panel1
Dim doc As PrintDoc = e.Form.GernatePrintDoc(sp)
Dim Count As Integer = DataTables("SFMX").Compute("Count(DY)","DY = 0")
If Count > 0 Then
    doc.Preview()
    Tables("SFMX").Current("DY") = True
End If

[此贴子已经被作者于2013-3-12 0:45:50编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2013/3/12 8:16:00 [只看该作者]

Dim sp As WinForm.SplitPanel = e.Form.Controls("SplitContainer1").Panel1
Dim doc As PrintDoc = e.Form.GernatePrintDoc(sp)
Dim t As Table = Tables("收费明细")
For i As Integer = 0 To t.Rows.Count -1
    If t.Rows(i)("打印状态") = 0 Then
        t.Position = i
        doc.Preview()
        r.Rows(i)("打印状态") = 1
        Exit For      
    End If
Next

 回到顶部