说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何解决VB中的Grid控件的打印问题

HTML文档下载 WORD文档下载 PDF文档下载
VB如何解决VB中的Grid控件的打印问题
作者:李俊海
---- Grid 控 件 是Visual Basic 最 常 见 控 件 之 一, 从VB3.0 到VB5.0 都有 该 控 件。 也 是VB 爱 好 者 最 喜 爱 的 工 具 之 一。 用 它 可 以 以表 格 的 形 式 显 示、 浏 览 数 据, 特 别 是 数 据 库 应 用, 直 接 绑定 即 可 显 示 浏 览 数 据 库 信 息。 然 而, 美 中 不 足 的 是Grid 没有 编 辑 和 打 印 功 能, 列 与 列 的 位 置 不 能 相 互 交 换。 笔 者 曾尝 试 着 给Grid 增 添 了 这 些 功 能, 使 之 锦 上 添 花, 功 能 更 强大。 下 面 给 出 改 进 方 法 及 源 程 序, 读 者 只 需 按 步 骤 写 下 源程 序 即 可 使 你 的Grid 具 有 打 印 功 能。 该 程 序 笔 者 在HP5/100Window 95 环 境 下 用VB5.0 调 试 通 过。

---- 给Grid 控 件 增 加 打 印 方 法 有 三 种:1 是 直 接 打 印 控 件 的方 法,2 是 过 printer 来 实 现 打 印 功 能,3 是 通 过 调 用MS-WORD 及MS-EXCEl 来 实 现 打 印。
---- 首 先, 打 开 一 个 应 用, 在FORM1 中 增 加DATA 控 件DATA1, 把DATA1 的CONNECT 属 性 设 为dBASE III, 再 把DATABASENAME 属 性 设 为D:\PJXM.DBF。 然 后 再 在FORM1 中 增 加MSFLEXGRID 空 间GRID1, 并 把GRID1的DATASOURCE 属 性 设 为DATA1。 这 样 数 据 库PJXM.DBF 的 信 息 就 会 在GRID1 中 显 示 出 来。

---- 方 法 一: 直 接 打 印 窗 体 法, 在FORM1 中 增 加 命 令 按 钮(command),CAPTION 属 性 设 为 直 接 打 印, 再 写 入 下 列 编 码:

Sub command_click
Form1.printform
End sub

---- 这 样 即 可 通 过 打 印 窗 体FORM1 的 方 法 把GRID1 的 数 据 打 印出 来, 遗 憾 的 是 只 能 打 印GRID1 中 显 示 的 数 据 部 分, 显 示 不出 来 的 则 无 法 打 印, 而 且 这 种 打 印 方 法 很 象 屏 幕 硬 拷 贝把 其 他 控 件 也 打 印 出 来。 也 不 能 灵 活 的 控 制 字 体 等。

---- 方 法 二: 通 过PRINTER 实 现 打 印。 这 种 方 法

---- 1、 加 入 打 印 命 令 按 钮(command1)、 函 数(prnt1) 即 可 实 现 打印 功 能, 写 入 下 面 代 码, 读 者 稍 加 改 动 可 写 成 标 准 的 函 数或 过 程。

Function prnt1 (x As Integer, y As Integer,
font As Single, txt As String)
printer.CurrentX = x
printer.CurrentY = y
printer.FontBold = False
printer.FontSize = font
printer.Print txt
End Function

Sub command1_click
Dim fnt As Single
Dim pp as integer
Pp=0'设置开始页码0
Dim stry,strx,strx1,stry1,linw,page1,p As Integer
Static a(8) As Integer'定义打印的列数
ss$ = "内部结算存入款对帐单"'定义表头
kan = 0
For i = 0 To 8
a(i) = 1500'定义每列宽
kan = kan + a(i)'计算表格总宽度
Next

page1 = 50'定义每页行数
strx = 200
strx1 = 200'定义X方向起始位置
stry = 1400
stry1 = 1400'定义Y方向起始位置
linw = 240'定义行宽
fnt = 8'定义字体大小
printer.fontname = "宋体"'定义字体

dd = prnt1(4000, 700, 18, ss$)'打印标题
printer.Line (strx - 50, stry - 30)
-(strx + kan - 10, stry - 30)
For j = 0 To gridrow - 1'gridrow为所要打印的行数
grid1.row = j
strx = strx1
printer.Line (strx - 50, stry - 30)
-(strx + kan - 10, stry - 30)
p = p + 1
For i = 0 To 8
grid1.col = i
dd = prnt1(strx, stry, fnt, grid1.text)
strx = strx + a(i)
Next

If p > page1 Then'next page
p = 0
strx = strx1
'line last line
printer.Line (strx - 50, stry + linw)
-(strx + kan - 10, stry + linw)
stry = stry1
'line col
For n = 0 To 8
printer.Line (strx - 30, stry - 30)
-(strx - 30, stry + (page1 + 2) * linw)
strx = strx + a(n)
Next
printer.Line (strx - 30, stry - 30)
-(strx - 30, stry + (page1 + 2) * linw)
pp=pp+1
foot$="第 "+cstr(pp)+"页"
dd = prnt1(strx - 30-1000, stry + (page1 + 2)
* linw+100, 10, foot$)'打印页角码

printer.NewPage'next page
dd = prnt1(4000, 700, 18, ss$) '打印标题
strx = strx1
stry = stry1
printer.Line (strx - 50, stry - 30)-
(strx + kan - 10, stry - 30)' print first row
Else
stry = stry + linw
End If
Next
st = stry
If p < page1 Then '在最后页剩余划空行
For o = p To page1 + 1
strx = strx1
printer.Line (strx - 50, stry - 30)
-(strx + kan - 10, stry - 30)
stry = stry + linw
Next
End If
stry = stry1
strx = strx1
stry = stry1 'line col
For n = 0 To 8
printer.Line (strx - 30, stry - 30)-
(strx - 30, stry + (page1 + 2) * linw)
strx = strx + a(n)
Next
printer.Line (strx - 30, stry - 30)-
(strx - 30, stry + (page1 + 2) * linw)
pp=pp+1
foot$="第 "+cstr(pp)+"页"
dd = prnt1(strx - 30-1000, stry + (page1 + 2)
* linw+100, 10, foot$)'打印页角码

printer.EndDoc'打印结束
Endsub

---- 这 种 方 法 通 过 灵 活 的 编 程 可 以 方 便 地 调 整 字 体、 字 型、线 形、 页 面、 纸 张 大 小 等。 可 打 印 出 比 较 满 意 的 效 果。 如果 你 的 计 算 机 上 装 有MICROSOFT WORD 和MICRO EXCEL, 最 精 彩 的 用法 还 是 把GRID 的 表 格 通 过VB 发 送 到MICROSOFT WORD 及MICRO EXCEL。生 成MICROSOFT WORD 和MICRO EXCEL 表 格。 这 样 就 可 以 充 分 利 用MICROSOFT WORD 和MICRO EXCEL 的 打 印、 编 辑 功 能 打 印 出 更 理 想 的效 果。 下 面 逐 一 介 绍。

---- 方 法 三: 通 过 生 成MICROSOFT WORD 表 格 打 印

---- 1、 在declaration 中 写 入:

Dim msword As Object

---- 2、 加 入 打 印 命 令 按 钮(command2),CAPTION 设 为" 生 成WORD 表
格", 写 入 下 面 代 码,

Private Sub command2_Click()

screen.MousePointer = 11
Set msword = CreateObject("word.basic")

Dim AppID, ReturnValue
appID = Shell("d:\office97\office\WINWORD.EXE", 1)
' Run Microsoft Word.

msword.AppActivate "Microsoft Word"
'msword.AppActivate "Microsoft Word", 1
full
Screen.MousePointer = 0
End Sub

---- 2、 写 入 以 下 过 程full()

Sub full()
Dim i As Integer, j As Integer,
col As Integer, row As Integer
Dim cellcontent As String
Me.Hide
cols = 4'表格的列数
row = gridrow'打印表的行数
msword.filenewdefault
msword.MsgBox "正在建立MS_WORD报表,
请稍候.......", "", -1
msword.leftpara
msword.screenupdating 0
msword.tableinserttable , col, row, , , 16, 167
msword.startofdocument
for j=0 to gridrow' 表格的行数
grid1.row=j
For i = 1 To cols
Gri1d.col=i
If IsNull(grid1.text) Then
cellcontent$ = ""
Else
cellcontent$ = grid1.text
End If
msword.Insert cellcontent$
msword.nextcell
Next i
Next j
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings 1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating 1
msword.MsgBox " 结束", "", -1
Me.Show

End Sub

---- 方 法 四: 通 过 发 送 到MICROSOFT EXCEL 实 现 表 格 打 印

---- 1、 加 入 打 印 命 令 按 钮(command3),CAPTION 设 为" 生 成EXCEL 表
格", 写 入 下 面 代 码

Private Sub command3_Click()
Dim i As Integer
Dim j As Integer
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
'Set xlBook = xlApp.Workbooks.Add
'On Error Resume Next
Set xlBook = xlApp.Workbooks.Add 'Open("d:\text2.xls")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(6, 1) = "i"
For i = 0 To gridrow
grid1.Row = i
For j = 0 To 6
Grid1.Col = j

If IsNull(Grid1.Text) = False Then
xlSheet.Cells(i + 5, j + 1) = Grid1.Text
End If
Next j
Next i
Exit Sub

悼念斯诺登使用的加密电邮服务——Lavabit架构解析 运营商上阵OTT “一笑泯恩仇”后路在何方 [企业开源系列]后起之秀Facebook凭什么挑战互联网霸主Google? 谷歌推出免费标签管理应用Tag Manager McAfee CTO Phyllis Schneck被任命为NPPD副部长 Bootstrap 3.0发布 更好地支持移动端和响应式开发 国内创业公司QingCloud的魄力:做一个世界级的IaaS服务 从毫秒到微妙,纯硬的闪存阵列IBM Flash System来了! 中科创达邹鹏程:黑客精神逐渐被人遗忘 有点让人感伤 通过讲故事的方式来设计优秀网站 “肮脏的”IT工作排行榜 Clank:带有SCSS的高效率移动应用原型框架 欧朋 CTO 罗志宇:谈Sphinx游戏引擎的前世今生 John Carmack大神亲手操刀,Oculus Rift SDK即将发布 从南极之争谈软件架构十个技巧,及成功团队具备的气质 Imation重拳出击,推出新型混合存储平台 张建华:FusionSphere不是简单的OpenStack发行版 Chrome 29来了:地址栏变得更“兼容” Android版增WebRTC 工程师谈在Facebook工作最糟糕的事情 用Scala重构19楼——SDCC 2013讲师王治专访 10款最新且超实用的开发框架 创业公司为什么应该写博客? 向iOS SDK看齐:Facebook Android SDK迎来重大更新 闯向海外:对话AppFlood产品总监陈霄 高手爱跨界:联想智能桌面,27寸大Pad抢先试玩 惠普第三季度收入272亿美元同比下降8% 高管重新布局 原来我们会出这个价钱购买“廉价”iPhone Web设计过程中该做和不该做的 新细节披露:通过电信合作 美国75%网络遭NSA监控 实时Bug检测工具Bugsnag发布API更新 【观察】一大三小:亚马逊,微软、谷歌、IBM ,IaaS四足鼎立 请高手帮忙 SQL数据库恢复问题 我用jbuilder5编译EJB为什么老有例外,md,急死我了 窗口列举的问题,请给点思路 时间比较问题 怎么禁止在CWebBrowser上点右键? asp.net中连接oracle9出现了这样的问题:ORA-12640: 验证适配器初始化失败,帮忙解决,在线等待! 如何做能变色的按钮? 用了就不放?,内存怪现象请教高手? 招聘的故事 用了就不放?,内存怪现象请教高手? 急。各位有没有NT高手呀!怎么配置NT下的IIS呀? 高分求救!!急!!关于无法找到动态连接库的问题。 xpmenu控件的使用! 招聘的故事 请问谁有《Visual C++ MFC 编程实例》这本书的配套源代码?(在线等) 如果我数据库里有一篇文章 怎么格式化她????? isapi中用ado访问数据库只能读不能写,何故?相同的代码在exe中可以 在对话框中建立一个socket连接,如何在释放对话框之后保存这个连接以备以后使用? 关于屏保程序的讨论 安装程序的BDE问题? 我创建了一个POPUP风格的窗口,如何去除背景? 和 Oracle 的连接问题(odac ) 帮忙看一下有什么问题!! 高分求救!!急!!关于无法找到动态连接库的问题。 指纹算法 Java Developer Interbase如何自动保存更新 请教数据库连接池的使用.... 不要以为你不骂人你的素质就比那些骂街的高了,如果你卖国那么你的素质比那些骂街的更低,因为你基本不具备一个人的素质了 哪位有有关Vtune的相关资料呀,提供链接也行,最好是指南一类的,3X。 编程几年了,没有希望,想改行,你们呢? 有谁做过“文物馆的文物或藏品综合管理系统”如能提供资料或动者!本人感谢! 入门时奇怪问题? 如何把*.IMG文件转换为JPG文件? 其实你不懂我的心 那里可以买到microchip的mcp2150 ,(要现货),比较紧急,请帮忙 关于对2进制文件的操作 将去做SAP ABAP4平台编程,用过的请进。up有分。 C的图形问题? 为什么我点进去看不到内容? 如何考中程 数据窗口控件为dw_6,其间的对象为D_PUR,我想使其中的图片框的VISIBLE属性变为FALSE总是有错误,请教:)在线等待 kylix2在RedHat7.2下的安装问题? 能告诉我吗????各位哥哥指点一二 数据库置疑问题,并不难?请进 关于串口通讯(向手机发送AT命令集) 高手请看:表格的终极问题 如何得到treeview中选中项的标签或内容? 在哪能下载到FOXPRO2。0(FOR DOS) 请教高手!我没多少分了,50分给你! 怎么办? OH和NH4组成 ;SO4分别和Na、Ca、AL、Fe、NH4组成 ;NO3分别和Ca、Na、Al、Fe、NH4组...OH和NH4组成 ;SO4分别和Na、Ca、AL、Fe、NH4组成 ;NO3分别和Ca、Na、Al、Fe、NH4组成 . 土壤中有机物主要来源于生物的排泄物和死亡的生物体及众多的细菌和微生物,在土壤生物的作用下形成( )为土壤中有机物主要来源于生物的排泄物和死亡的生物体及众多的细菌和微生物, 好评*^o^* 大一新生应该读些什么书为大学做准备拜托谈些有用的经验, 给好评!求过程详细!o>_ 来帮我检查一下生物测试题 看看对不对 先给答案 最后追加给分1. ★今日的地球,森林正在减少;海洋、河流、湖泊受到污染;荒漠在蔓延;湿地在缩小;大气中,二氧化碳在增加;臭氧层遭 人教版八年级生物“基因的显性和隐性”给讲讲呗易懂点. 求解答,好评谢谢!要过程O(∩_∩)O 我们生物考试看看我下面这题对不对我们生物考试有个题说 小肠里含有什么?大大增加了它的表面积.本来要填有小肠绒毛才是对的 但是我填毛细血管和毛细淋巴管(小肠绒毛就是含有它们的 大一新生,准备考英4级 自学要看哪些书好? 好评(⊙o⊙)哦 1.蚯蚓身体分节,它体节的作用是:DA.传递营养 B.使躯体运动灵活,转向方便 C.排泄方便 D.保持体温恒定2.大雨过后,可以看到许多蚯蚓爬到地面上来,这是由于:CA.蚯蚓喜欢水多的环境 B.雨后地 拜草枯除草剂对鱼类有毒吗? 生物(基因的显性和隐性)问题在人群中,生来就惯用右手与生来就惯用左手(不包括后天的矫正和练习)是一对相对形状.父亲惯用左手,母亲惯用右手,他们生的孩子也是惯用右手的.请问,这 运用经济生活知识分析如何破解我国能源困局,维护国家能源安全 除草剂在鱼塘边使用会影响鱼的生长吗?还有除草剂怎么配水使用?请看清题目再去找资料 来回答 请问我是大一新生,有没有什么英语方面的书适合我?我想考四级 (2005·广东生物·14)生物组织中还原糖、脂肪和蛋白质三种有机物的鉴定实验中,以下操作错误的是A、可溶性还原糖的鉴定,可用酒精灯直接加热产生砖红色沉淀B、只有脂肪的鉴定需要使用 这是什么鱼, 初二生物基因的显性和隐性没学好怎么办啊~如题,我完全不知道怎么算,好多问题都要算的比如说:AA×aa=?AA×Aa=?Aa×aa=?Aa×Aa=?aa×AA=?这些都是怎么算的啊?我需要掌握基因的计算公式.还有aa可不 美国如何保护民族工业 水厂用二氧化氯,还需要液氯吗?用二氧化氯消毒,氯酸钠和浓盐酸反应生成的氯气怎么处理? 大一新生该看些什么书?工科 专业外的东西也很想学还有对人生比较有教育的 给点书名吧 生物(请指出错误的地方)下列叙述正确的是A从免疫学角度看,甲型H1N1流感病毒是一种抗体,从传染学角度看,它属于病原体B.注射过麻疹疫苗的人,对甲型H1N1流感不具有免疫力,这是人体特异性 液溴和三氯化铁为什么不能用于饮用水消毒,而液氯可以 我们要在这次“科技月”活动中,养成一种爱科学、学科学、用科学. 怎么修改病句啊! Some states have developed an ...这个短句怎么译(关于美国能源安全建议方面的)Some states have developed an enlightened approach to siting new facilities.We recommend pre-qualification of sites, 悬梁刺股的是谁 苏秦 孙敬 “我对献身科学的青年们的希望是什么?”将这句话改病句 指出以下错误的地方1.对酵母菌计数时,用吸管吸取培养液滴满血球计数板的计数室及其四周边缘,轻轻盖上盖玻片后即可镜检2.沸水浴条件下,脱氧核苷酸与二苯胺发生作用呈现蓝色 成语《悬梁刺股》的主人公是?我知道有一个是苏秦,还有一个是谁? 我们要在青少年中开展热爱科学.(修改病句) 沙子 海水如果 开条水渠之类的东西 把海水引到沙漠里是不是很爽 悬梁刺股的这个成语说的历史人物是谁 修改病句“中学生是青少年学习的重要阶段之一.” 靴子进了沙子和海水今天去海边玩,毛靴里面直接被海水冲了,进了很多海水和沙子.该怎么办清理干净那些沙子?靴子表面上绒面,里面是毛 印度洋中的凯尔盖朗岛属于哪个大洲? 请问二氧化氯、亚硫酸氢钠、次氯酸钠那一种漂白效果好一些 怎么判断基因的隐性和显性我的意思就是比如说为什么双眼皮就是显性而单眼皮就隐性呢? “孙敬头悬梁 苏秦锥刺股”的启示 开盖好久的矿泉水喝了会怎么样 基因的显性和隐性怎么判断?还有,有时候父母都是双眼皮子女是单眼皮,有时候父母都是单眼皮子女是双眼皮.那么双眼皮的基因到底是显性还是隐性? 悬梁刺股中“悬梁”指的是谁 大一新生在过英语四级前做何准备 如何判断基因的显性和隐性 一堆货物有120吨,用甲车运得用4小时完成,甲乙车运6小时完成.现在由甲、乙合运这批货物,需要多少小时? 大一新生应该为英语四级做好哪些准备? 沙子怎么检尺 如何分辨生物中的显性基因和隐性基因? 请问:我是大一新生,12月考英语4级,那我该做什么准备呢? 给好评(⊙o⊙)哦 2009年江西的大一新生英语四级什么时候考?什么时候报名?怎么报名? 大一新生,英语四级应怎么样学?我来年就想考,谁能给点建议,谢啦! 怎么做,给好评哦!^O^ Ca(OH)2+Fe(no3)3= 能源安全战略的意义主要是从全局来说,字数越多越好主要是从国际上来说 非常感谢,给好评的(⊙o⊙)哦. 是 头悬梁 锥刺股还是 头悬梁 锥刺骨?好像两个都有标准的是那个? 求过程,有好评^O^ 一个圆柱的底面积是1.57平方分米,高是2分米,体积是( ).
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘