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


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

主题:窗口打印时的选定行问题

美女呀,离线,留言给我吧!
yangming
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
窗口打印时的选定行问题  发帖心情 Post By:2009/6/5 10:36:00 [显示全部帖子]

    在窗口打印只能是一行一行的打印,为了一次性打印N行,我做了一段代码,放在打印按钮中,先筛选,然后再打印,可是我发现,凡是做好绑定的控件,可以随着行的移动而改变,而用代码取值的几列不会改变,比如大写金额我是按此代码,放在定时器中的
Dim lbl As WinForm.Label
lbl = e.Form.Controls("Label5")
lbl.Text = CUMoney(dr("金额"))

请看以下筛选打印代码

CurrentTable.Filter = ""
Dim Filter1 As String
With e.Form.Controls("TextBox1")
    If .Value IsNot Nothing Then
        Filter1 = "'*" & .Value & "*'"
    End If
End With
If Filter1 > "" Then
    Tables("支piao").Filter = "付款人账号 Like " & Filter1 & " Or 用途 Like " & Filter1 & " Or 收款人 Like " & Filter1 & " Or 日期 Like " & Filter1 

End If

forms("支piao").Show()
CurrentTable.Position = 0
With Tables("支piao")
       For i AS integer = 0 To  .Rows.Count-1
         Dim doc As PrintDoc
doc = Forms("支piao").GernatePrintDoc()
doc.Preview()
   CurrentTable.Position = CurrentTable.Position + 1
    Next
End With
forms("支piao").Close()
CurrentTable.Filter = ""


 回到顶部
美女呀,离线,留言给我吧!
yangming
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 12:33:00 [显示全部帖子]

这个问题我不光是想到做支piao打印的,主要是考虑到其它的窗口设计时的打印,比如套打证书?就有可能是连续打印N张,呵呵,当然,对这样的特殊的打印,还是选一行打一行最为保险,呵呵

 回到顶部
美女呀,离线,留言给我吧!
yangming
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 12:37:00 [显示全部帖子]

按照第一行或是下一行的代码,是没有问题,我的问题是,如果控件绑定的是某一列,没问题,如果是用代码对某列进行计算时就会出问题,呵呵


 回到顶部
美女呀,离线,留言给我吧!
yangming
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 15:38:00 [显示全部帖子]

我试试,先谢谢mr725老师

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 15:49:00 [显示全部帖子]

试验结果,必须时时打开此窗口.不然会报错


 回到顶部
美女呀,离线,留言给我吧!
yangming
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 15:54:00 [显示全部帖子]

窗口中要有:positionchanged 事件就好了

 回到顶部
美女呀,离线,留言给我吧!
yangming
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 17:39:00 [显示全部帖子]

我将下面代码放到表事件:AfterLoadTableSetting中
Forms("支piao").open()

Forms("支piao").visible = false
就不会报错了,再次感谢mr725老师


 回到顶部
美女呀,离线,留言给我吧!
yangming
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 19:06:00 [显示全部帖子]

窗口的

AfterLoad中还是要放上以下的代码,不然打开窗口时第一行的大写金额还是不能计算
Dim lbl As WinForm.Label
lbl = e.Form.Controls("Label5")
lbl.Text = CUMoney(dr("金额"))

[此贴子已经被作者于2009-6-5 19:08:18编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/6/5 19:09:00 [显示全部帖子]

以下是引用易狐在2009-6-5 17:39:00的发言:

我一直没有研究,利用循环语句,通过向下移动焦点行的方式来打印是不是实现起来能容易点?(没学到这一点,只是猜想)

我就是利用循环语句,来移动行的方式来打印的


 回到顶部