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

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

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


三星Galaxy Gear智能手表失利 需改进的8个方面 IE11全新的F12开发人员工具详解 研发周报:为什么开发者担心将代码公布 Hadoop YARN的发展史与详细解析 一周消息树:Firefox OS会不会成为下一个Android PhoneGap 3.3.0发布,支持Android 4.4 KitKat 移动周报:两岸三地在线编程学习网站大搜罗 有道周枫和他的“放养”团队 看IE11如何助力AAF推动公益事业 SUSE总裁Nils:将SUSE Cloud 2.0打造成“零影响的云安装程序” Windows 8之父Steven Sinofsky:2014年科技界的十大趋势 电视盒子还没智能化?看Fan TV们怎么玩 畅游启动“必赢计划” 十亿巨资代理优质产品 数据控使用Hadoop的三种最常用方式 值得创始人学习的五大企业文化管理方式 圣诞节快乐:来自程序员们的问候 宏碁任命新CEO Jason Chen:曾任职英特尔14年、台积电8年 史上第一次越狱发布会与Evad3rs太极助手罗生门 新东方在线CTO曾明:已用Cocos2d-html5开发出150余款产品 Facebook 2013年的9个开源项目 开源力量公开课2013年度庆典:我们的开源项目 看雪学院“走进企业看安全”活动走进安全管家 视频+PPT:苹果iOS7 Tech Talks大会演讲内容 iPhone 6和Galaxy S5暂不会采用弯曲屏技术 当程序不工作时,开发者常用的借口 携程技术副总裁叶亚明:三次重大技术改进的故事及背后原因 Google抛弃C语言,采用Go语言重写Go编译器 jQuery Mobile 1.4.0正式版发布,着重性能改进 IBM收购Aspera加速大数据传输 各式各样的极品程序员,你属于哪一种 Google员工离职前必做的14件事情 ASP 0178 (0x80070005) 各位高人,请一定帮个忙吧 !! SetCellImage 利用C# 读取系统当前进程的出现问题,帮忙!! 请教高手:怎样在一个窗口里能够输入文本文件(按回车键) 另一个窗口显示出同样的文本 高手在何方 (大力请进)sql字符串处理的问题 上哪能下到exchange 2000,下到马上给分! ado问题? 数据迁移问题??? 怎么把列名选出来? [在线求助]:有什么好的方法可以使得鼠标放上有链接的地方状态栏不显示真实地址? 高手在哪!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 各位大哥﹐何為微创软件开发管理﹖﹖﹖﹖ 3com switch 3300 xm 有网管的功能吗? 关于窗口大小的问题,快来捡分~~~ 为什么2001年前的提问的问题、得分的问题、信誉分变化纪录都不见了。 无法在人才频道上提交简历。。。 请问:wsad4支持滚轮鼠标的插件哪里有下载??? 自动锁定计算机? 请问如何终止一个正在运行的应用程序 无法在人才频道上提交简历。。。 后面数据库为ms sql server2000的时间问题? DoEvents 怎么用?(不好意思,只有这么多分了!) CSDN真让我失望,大家都喜欢回答无聊的问题(不要回复) jdbc中LIKE条件如何使用prepareStatement? 请问,如果想报考系分的话,需要先过高程吗? 请问怎么把Excel形式的表结构导入到Oracle … 请问数据窗口中如何自动记录资料修改的帐户? 我倒要看看谁有本事让javac输出这样的信息? ADSL 可以直联吗? linfeng1216 (林枫) 请来领分。 在java中的暴露事件如何处理? 求PowerDesigner电子书籍资料!急! 有关_SERVER["HTTP_CONNECTION"] 两个窗体 带有setup程序和一堆代码的电子书怎么看? 这个web控件谁能介绍的详细一点 DCOM的配置问题 三国经典故事(女性,18岁以下者勿进) TIME_WAIT问题(100分!!!) linfeng1216 (林枫) 请来领分。 求C++Test2.1的license 我在用ASP.NET编程,请问如何让Datagrid的head显示两行,并且可以合并单元格。在线等 我的程序这样写对不对? 表格宽度的问题! linfeng1216 (林枫) 请来领分。 履约费小计=履约合同费1+履约合同费2 计算问题。 问问unix下进程的问题 javascript中的函数互相调用? 为了我们的生殖健康,坚决反对婚前性行为!!---人类生殖健康的天敌:支原体感染,不是艾滋的艾滋! T细胞功能检测都用什么实验 一个正方体水池的表面积是80平方分米,缸高16厘米,水原来的高是8厘米正方体水池放入石块后,水深上升到12厘米,求这个石块的体积越简便越好 《咏雪》一文中用哪两句来比喻大雪纷纷的 研究发现,有一种药物可使细胞不能合成糖蛋白上的糖侧链,那么这种药物主要作用于哪种细胞器为什么是内质网而不是核糖体? 旗杆外部没有旗绳为什么有的旗杆外没有旗绳,而转轮在旗杆内部,也能升旗.这是怎么回事 夜雨寄北和咏雪用什么和什么来比拟大雪纷纷 丑的读音和意思? 一道数学问题,详见问题补充.甲圆柱形容器的底面半径是乙圆柱形容器底面半径的2倍(容器直立放置).现以相同流量同时向这两个空容器内注入水,经过一定的时间,甲、乙两个容器内水面的 英语翻译1他们以勇敢为荣耀(honour)2他们用暴力证明自己勇敢(violence) 燕滨扶正胶囊药理学功能实验报告书中小鼠脾细胞数IGM-PFC的影响是什么意思? 辨别古文字还有下面的小字 富士山是活火山吗?什么时候喷发?周期是多少?分析一个地区的地貌特征,要从哪些方面考虑? 4边形有几条对角线 5边形呢 10边形呢 活火山是什么 小明看到生旗时旗杆上的旗子迎风飘扬,猜想在气球下面系一面旗子,当气球升到空中以后,如果刮起了风,气球下面的旗子也会飘起来吧!于是他动手做实验发现旗子并不会飘起来,他仍然下垂.你 正12边形取出4个顶点 互不相邻的概率是多少呢 英语翻译正在设计一个请帖,求 "让爱起航" 这四个字的英文. 甲、乙两只蚂蚁,同时从一跟绳子的两端向中间爬,20分钟后相距6米,这时甲爬了全长的40%,乙爬了全长的75%,求绳长. 不用方程解小学五年应用题李欢同学练习跳远,前6次平均跳了3.2米,又跳了2次,前后8次平均跳了3.3米,最后两次平均跳了多少米? 寅和卯的读音 甲开车,发现乙正往反方向步行走去,10分钟后把车停下跑去追乙.已知甲跑步的速度是乙的3倍,汽车的速度是乙的10倍,问甲追上乙需要几分钟? 甲/乙从AB两地相向而行,第一次相遇时,距离A点8千米,继续前进,到达目的地后返回,在A点5千米相遇,AB两地距离是多少? 子丑寅都指哪段? 线段AB被M分成3:5两段,同时又被点N分成3:1两段,如果MN=12厘米,求线段AB的长. 小学4年级的应用题(不用方程式)3年前,父亲与儿子的年龄和是49岁,现在父亲的年龄是儿子的4倍.父子现在各是多少岁? 子,丑,寅,牟,辰,巳,戊,未,申,酉,戌,亥.罗马发音火影里的结印手势要用的 This is the reason whyhe late for school为什么用why,why可不可以省 1.甲乙两车同时从两地相对开出,甲车每小时行50千米,乙车每小时行42千米,途中甲车因故障停了半小时,乙车开出5小时后两车在途中相遇,甲乙两地相距多少千米?2.上午9:30甲乙两车同时从A.B两 谢道韫咏絮中,“公大笑乐”的原因是什么?继! 人教版七年级数学上册77页第八题 文言文单字解释范式字巨卿,少游学于太学,与汝南张劭为友.劭字元伯.二人并告还乡里.式元伯曰:"后二年当还,将过尊亲.".(后面省略)将过尊亲: 日本的活火山有哪些 升旗手护旗手事迹简介开头怎么写字数不要多了! 求古文单字解释《鬼怕恶人》中的,然则祸当行于后来者,中的“然则”怎么译 地球上现在有多少座活火山? 升国旗的时候,护旗手如何把旗撇好,就是出去后,能让旗飘起来护旗手先把旗扬起来,旗手在升,可怎么扬才最佳!希望有经验的同学让告诉我,最好是天安门广场升旗班的同志告诉我! 文言文单字解释(急)贤于材人远矣 (找出通假字)____通____ 解释:_________ 中国有活火山吗?在哪? 哪位说说升国旗过程中,旗手举旗行进时,四个旗手应让旗面保持在什么样的一个角度? 使人摸不透,难以揣测的成语 算式中的图形用数字代替,使算式成立. 逆转录的过程是病毒侵入活细胞的过程吗 使人摸不透,难以预测.根据意思写成语 有木有用来形容看不透人心的句子,可以简短,但一定要有深度要有内容,诗也可以的. 我做了一回主.作文 摄取实验需要根据细胞在每个孔内的量的多少来分析其对药物的摄取情况利用大鼠胚胎细胞做药物的摄取实验后,需要根据细胞在每个孔内的量的多少来分析其对药物的摄取情况.而蛋白量可 获一二三等奖的人占总人数的几分之几?其中获一二等奖的人占总人数的五分之三,二三等奖的人占总人数的八分之七 英语翻译即书诗四句,并自为其名.书:____ 为:____日眅仲永环谒于邑人.于: 做药物的细胞毒性试验时药物与细胞悬液作用产生沉淀该怎么解决啊?实验还能进行吗? 判断题:1-a一定小于1 若对于有理数a,b,有a+b=0,则a=0,b=0.两个数的和一定大于每一个加数.速求正确谢 求以"让我做了一回主''为题目的500作文 古文单字解释宣于夏门亭候之,之:岁满不持一砚归,岁:无丝竹之乱耳,之:渔人甚异之,之: 生日蛋糕上写什么字好诗意的 以 今天我做了一回主 为题写一篇600字文章.初1水平的. 文言文的单字解释(就两个)急!“或异二者之为”和“卿今者才略”的者分别都是什么意思?我要问的是“者”字分别解释为什么?卿不是“你”的意思吗? 谢道韫 《咏雪》中的名句是那句? 病毒侵入细胞内后 为什么体液免疫可限制病毒移动 摸有什么组词 10米多高的旗子,绳子掉下来了,如何把旗子再换上去呢?绳子如何穿过旗杆顶端的定滑轮?有没有知道的?谢公司里的旗子破了,我打算把它换下来,自己没注意,一个绳子跑到了上面.最后整个绳子 咏雪一文中用____和____来比拟大学纷纷. 欧洲盗贼偷多幅世界名画 称怪艺术馆安东京警视厅一警官因涉嫌唆使少女卖淫遭新加坡消费者花数万元上金融课讲师竟是调查:23%美国人通过交友网站找到另中国多地雾气仍未散 内蒙古等地将迎来吉林省雾霾渐退影响仍持续 学校停课面东北三省史上最严重雾霾仍将持续 长春第一作者:格鲁吉亚德马尼西头骨化石价美国空军军官打盹致核导弹库防护门曾多斯里兰卡一化工厂发生毒气泄漏导致72加拿大卡尔加里市长胜选连任 笃信伊斯美国首家厕所主题餐厅开业 真马桶上阵外媒:日本也流行“土豪金”苹果发布新款平板电脑iPad Air日本猫站长阿玉担任“粉红丝带”宣传大浙江温州一在建祠堂坍塌致7人受伤浙江海事局下放海员证和油污保险证办理浙江省新增1例人感染H7N9禽流感病云南晋宁传唤嫌犯引发群体性事件 多名荷兰针对俄扣押其破冰船向国际法庭提起50多个国家将参加第五届外洽会吸引中李宇春“抢戏”“迪士尼光影汇”夜间巡游十月登场东部华侨城约你共享端午“六一”苦难是最好的导师66号公路 寻一场美国西部旧梦凯撒旅游成为 欧铁中国总代理商深沪两市股票 平均价格为6.80元股市疲软全因期指恶意做空?糖业今年亏损预计超百亿元深圳凯宾斯基酒店 给你一个迷你世界中小板十年培育上市719家企业电单车挡路 邻居却互不相让大打出手宁波 一座没有围墙的博物馆铁合金期货获准上市胡耀邦(23)纽约金价小幅回落中国历史的侧面(16)福田香格里拉大酒店 推出童趣小黄鸭主创业板指“五连阳” 相关杠杆产品受追期权将推出 添加做空“大杀器”爸爸,我们去东江湖吧!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘