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

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


重度使用AWS及Hadoop,Pinterest的自服务平台打造历程 《近匠》腾讯信鸽:基于大数据的推送 超低功耗&amp;#039;Whisper&amp;#039;架构发布:IoT、可穿戴连接性IP新标准! R的数据分析制霸以及企业级应用盘点 第二届游戏运营技术论坛来袭!与大牛共论云时代的游戏运营之道 云雀科技:飞行器+地图,展望飞行器的新体验 Sandstorm,前Googler和极客名人建立通用开源工具保姆 触控科技CEO陈昊芝:引擎技术推动行业升级 谁能成为Hero,这一次你说了算!——TCL智能电视开发大赛创意阶段评审征集 微信官方在“公开课”上13个热点问题的解答摘要 MDCC 2014移动开发者大会10月开幕:你就是主角! 设计师该如何挣得一席之地? 回到未来:最热门的十大清洁能源技术公司 深度学习:未来机器人的进化途径 搜狗开源内部项目管理系统Cynthia,已被数十家企业采用 沃游戏新版本全新登场 好友PK根本停不下来 腾讯发布首款智能硬件,内部筹建孵化器鼓励创新 触控开发者平台:孕育“十亿开发者俱乐部” 《近匠》大新伙伴:大姨吗防晒小助手,帮你呵护女神 专访阿里云总裁王文斌:做出“用得爽”的工程产品 专访AMD全球副总裁潘晓明:2014全线发力,力争中国市场 搜狗开源内部项目管理平台Cynthia意欲何为? 深度解析浪潮新八路服务器TS860 支持Box2D,开源HTML5 2D游戏引擎FLAG 一周消息树:从程序员到架构师的方法与逻辑 【CTO俱乐部走进海尔】海尔的转型探索之路 十一问MongoDB CTO,谈NoSQL人气王的扩展、事务及运维 腾讯“创业•密码”开发者论坛 ChinaJoy引爆创业者关注 从F1赛车到智能手机,无线充电技术之崛起 助力梦想!MDCC免费为优秀App开发团队提供展位 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造 为什么这里的Timage.fillrect不起作用? 画图区域并没有增大? 急等答案 ,请问数据库中 的Null和零值有什么区别,请给详细解释一下 w18ily是不是现在的这个江湖无赖? 在linux下拨号怎么自动获得dns? 菜鸟都说:这个问题太菜了! 高手请进! delphi调用VC写的dll问题 corba达人快来帮忙!!!!! 不用JavaMail能在页面上直接发信给用户吗? 图像 up有分 大哥大姐们!小弟碰见了感情问题,大家帮帮小弟好吗,郁闷中……痛苦中……这里真的有一种家的温馨,所以小弟畅谈心扉,望大哥大姐帮忙! vc6的mfc里有CUIntArray、CStringArray,为什么没有CFloatArray,自己写怎样实现? 请问fastreport破解版哪里有下载? 这是我作的jsp和bean作的程序为什么不能运行:这一次发的是运行错误的信息。 谁敢拍着自己胸口摸着良心说没有用过马甲的 麻烦了:) 如何建立一个button清空文本框? 关于在RedHat2.1As上安装Oracle9i(9.0.1)的错误问题,帮帮我吧,火烧眉毛了! 急等答案 ,请问数据库中 的Null和零值有什么区别,请给详细解释一下 用FLASHGET无法下载. 趁着各位斑竹到任,赶紧把几个悬而未决的问题提出来,呵呵! com+的调用方式 哪位大侠知道今年计算机等级考试二级C语言还是用Turbo C2。0吗?还是在Dos环境下吗?(100相赠) 关于多媒体定时器的问题,各位进来看看 session出的问题,高手请进来!! 请问,大连雅奇培训如何?请指点。。。。。。 怎样用header()做下载文件? 关于检测组合键的程序怎样写? 菜鸟问题!!!页面显示后台数据 请问软件包LEDA -- library of the data types and algorithms 哪里有下载的? 如何获得当前页面中的所有Textbox控件集合? 如何对两个表操作???谢谢! java的程序在写Dreamweaver 4里写完不可以直接用,是不是 打印的问题 DELPHI5的资源编辑器用起来很不爽,有没有好点的? 帮帮忙~~~~ 请问软件包LEDA 哪里有下载的?谢谢 ado连接远程数据库是以文件共享方式,还是c/s方式啊? 有没有工作的JAVA程序员吗? 简单的语法问题 vb还是不太会用 求教 最菜的问题 如何保存无法保存的网页? 只要每人献出一点爱,人人都能成为程序员 呵呵,又有问题了 苦恼,大家帮忙啊 关于声音处理的一个问题 求英文资料,急!!! 帮忙解释一下程序,谢谢:) 怎样实现这样的存储过程?高手快来! 用过websnap的进来看一下,巨简单! 英语26个字母中分为哪两类,又分别有什么作用 1、10克氟化钠,用多少毫升水正好溶开成液体?再少了就溶不开了. 2、用双氧水多少能把10克氟化钠溶化成水 如何保证试验仪器设备状态正常 酶是干什么的?就像纤维素酶水解纤维素一样,是不是什么酶就专门水解这个东西的? 如何理解加权平均资本成本 谁知道耐磨擦试验机的产品用途及特点? 已知两个角有公共顶点和一条公共边,并且这两个角的另一边所成的角为50度如果两个角中的一个为140度,那么那么另一个角是多少度?请画一画,再算一算. 为什么为确定得到的是纤维素分解菌,还需要进行发酵产纤维素酶的实验,不是应该产纤维素吗? 纤维素多的食物指什么呢 有二个相等的角,它们有公共顶点和一条公共边,二个角的另一条边互相垂直.那么,这两个角的度数是多少 纤维素能用纤维素酶水解,再供给微生物发酵制成乳酸,最后聚合制造聚乳酸吗?请说明理由,否则一律无效! 纤维素高的食物是什么 一台天平,只有30g和5g两只砝码,利用这台天平如何将300g药粉分成150g,100gh和500g三份写出详细过程 设计一个实验,利用诱变育种的方法,获得产生纤维素酶较多的菌株.1、共4步骤,是什么?2、...设计一个实验,利用诱变育种的方法,获得产生纤维素酶较多的菌株.1、共4步骤,是什么?2、诱变组中菌 什么原因会发生泥石流? 一台天平只有30g和50g两只砝码,利用这台天平如何将300g药粉分成150g100g50g三份? 酒精和汽油哪个更易燃? 牙齿最多的哺乳动物 有两个钝角有公共顶点和一条边,两个角的另一边夹角是90°,求钝角 南平市冬天最高温度 没有牙齿的哺乳动物是什么 300g黄沙一台天平5g和30g砝码各一个只用3次天平怎样把300g分成3等份?还有要算式不是用中文ok? 为啥会发生泥石流 哺乳动物牙齿分化的意义? 科学家的故事(说清楚成就)或科学故事 不超过150字 在2012年5月31日前回答,不然再好我也不会选为满意的!一定要说清楚成就! 为何会发生泥石流? 为什么会发生泥石流?怎么导致的? 转基因技术能否将乌龟的长寿基因转接到人体上来,实现人类的长寿吗? 是什么原因会发生泥石流? 人类以后会进化吗? 26个字母能给组成多少个不同的4位字母 如abcd syeb 这样能组合出来多少个 为什么会发生泥石流? 地震中的父与子中心思想是什么? “自高处下落的物体,一定会落在偏西的地方”为什么不证明地球在自转? 牛顿有没有结婚 向哥哥借500元,向姐姐借500元,买双鞋花了970元,剩了30元,还姐姐10元,还哥哥10元,自己还有10元,一共990元,剩下的10元去哪里了? 有同样大小的红黄黑珠共97个,它们依次按3个红珠,2个黄珠,4个黑珠的顺序排列,第97个珠子是什么颜色? 甘肃为什么会发生泥石流 在姐姐那借500元钱在哥哥那借500元钱、买鞋花970元剩30元还姐姐10元还哥哥10元,自己剩10元欠哥哥490元欠姐姐490元490+490=980加上自己剩的10元等于990元那10元哪去了? k相邻的字母 甘肃舟区是因什么原因发生泥石流的. 生活中的摆动有哪些?诸如钟表摆动、秋千、台秤的指针,还有什么是摆动的呢? 嵊州是浙江哪个地区的 叶绿素是怎么在植物体形成的? 在台秤上放一个空的金鱼缸,然后用玻璃杯盛满水,一杯一杯地往里倒.当倒进2杯水时,台秤上的指针指向600克,当倒进5杯水时,台秤上的指针指向750克.当倒进8杯水时,台秤上的指针指向多少克? 浙江嵊州的小吃街在哪里,哪里可以逛街啊,玩一玩啊什么的,大的齐全的超市,除了国商还有哪里,麻烦地址具体点, 甘肃曲舟发生泥石流的因素有哪些?请回答者要有简明的概括力度(请混工分的敬而远之) 哺乳动物有几类 我想知道浙江嵊州市里面有没有一个叫嵊州府或嵊州庙的?我没有去过嵊州,也从来没听过嵊州这个名字,因为我是广东的,可是我梦见我去到了这个地方,里面有很多不同的菩萨,我出来看了一下 三角形的三个顶点是A(6,3)、B(9,3)、C(3,6),求它的三个内角的度数做的好,我会加分的, 九星连珠会发生什么 英文字母t 应该先写哪一笔 已知三角形顶点为A(2,0),B(-1,4),C(5,1)求三角形三个内角及面积 大肠杆菌培养及计数在对培养的大肠杆菌进行活菌计数时,发现琼脂表面有乳白色微偏暗的直径约4~5mm的菌落,琼脂底部与培养皿接触的面上有浅色较浅的白色直径约3mm的菌落,而琼脂内的菌落 什么是黑洞 把质量为m的物体从地面竖直向上抛出,抛出时物体的初动能为Ek0,物体从抛出到落回地面的过程中受到的空气阻力的大小恒为重力的0.2倍,求:(1)物体可上升的最大高度H(2)物体运动到高度 物体由静止开始自由下落,经2S落到地面,不计空气阻力 取g=10m/s^2下列判断正确的有A物体从40M的高处开始下落的B物体从20M的高处开始下落的C物体落地的速度大小为20m/sD物体落到时的速度大小 26个英文字母分为几类? 物体从离水平地面h高处水平抛出,落地时间的速度方向与水平面成θ角,那么,物体水平抛出的初速度是 上弦月和下弦月 澳政府驳斥境内野火与气候变迁有关引媒美监听行为激怒欧盟 欧盟国首脑纷纷表挪威拒绝美国请求 将不接收销毁叙利亚法列车餐车迎来“美食新革命”告别冷三日本东北大学被评“黑心企业”校长强烈杭州推出\"助残爱心岗位\"信息平台金正恩出席朝军2万人连长大会 发表历英国发布王室成员全家官方合影 凯特母棱镜门记者:英意情报部门为美国之帮凶美八州长签署协议 将向市场投放330伦敦顶级餐厅呼吁客人勿在餐厅内抽电子美加州三名亚裔居民涉嫌种植窝藏销售大报告称美成年人阅读及数学能力排名均靠美窃听各国使馆 韩外交部未抗议被指哑日内阁通过特定机密保护法案 将提交国美国女孩公园寻宝挖到3.85克拉钻石报告称美国成年人阅读及数学能力排名均美国三名亚裔居民涉嫌种植窝藏销售大麻克里叹美政府关门损形象 他国外交官欲60克拉绝美粉钻将拍卖 或成全球最贵美军1美分贱卖超级航母 曾爆炸致百余北方信托董事长刘惠文意外离世 传其系泉城环保世纪行:济南治理扬尘半年清理山航向波音购买50架新型737客机 新疆民事知识产权案件上升逾六成看好大陆市场 台厂拼高阶中小面板启动济南男子出租房内喝敌敌畏自杀 前妻3青岛三姐妹窃贼频向服装店下手 进门就欧冠赔率:切尔西客战被低看 马竞有望国民党坚守先核安后“公投”立场 核四台湾3月份年轻人及高学历者失业率下降李杰:中国海军综合实力超日本 二炮形康保县对接高等学府育人才 二人台发展石述思:破解临时工乱象须将行政权力转深圳拟上调20万企退人员养老金 20邯郸广平出新政 “到底谁能吃低保 群高碑店一车企亮相北京车展 自主设计房2014“思文科德杯”全国女子举重锦河北食药监局:虚假宣传成消费者首季举唐山滦州古城旅游文化巡演首站走进油榨保定警方举办“春训”汇报表演 7种特承德市银行系统“亲民度”“人性化”网
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘