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

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


音乐能力开放平台合作探索之旅 社交网络海外营销技巧及工具实战 大数据谬误 —— 为什么我们需要收集更多的数据 传苹果地图负责人Rich Williamson遭解雇? 一个月:Windows 8授权许可已破四千万 里程碑:iPhone与Android企业用户市场首次超过黑莓 VMware最快下周宣布分拆Cloud Foundry 国际原子能机构服务器遭窃 百多位专家信息泄密 用户可通过Google Drive直接向Gmail添加高达10GB的文件 韩寒携个人App进军移动互联网 亮相应用汇独家发布会 摆脱谷歌 亚马逊向开发者正式发布地图API 为什么应该用模块取代C/C++中的头文件? Mozilla布道师:HTML5在移动端没有未来? 那些年,历史上留下浓重一笔的黑客们 林敏博士:透过设计看三星手机帝国崛起 OpenFeint血泪史:我们是如何被苹果逼死的 或免费升级:微软2013年推Windows Blue系统 取经:《捕鱼达人2》每月捞金160万美元的秘密 AWS推数据仓库服务Redshift 价格仅是Teradata IBM Oracle的十分之一 美国开展数据中心整合计划 简化政府IT运营 阿里巴巴数据交换平台——集大成于一身 [体验]Windows 8 Metro/Modern Style IE 10 Growth Hacker正席卷全球,你了解它吗? Splashtop发布Ubuntu Linux版本Streamer 性能超过VNC 10倍 Windows 8引领智能操作 人机交互进入触控时代 豌豆荚发布新版应用搜索 推出“绿色标签”机制 权威解读:苹果的未来将走向何方? Google炮轰Facebook:你们的社交已经过时了! iOS设备硬件规格完整汇总 2012 MDCC“2012移动互联网应用创新大赛与开发者面对面”专场:创所未享,携手逐梦! RIM携QNX为“2012 BlackBerry平台移动应用高校竞赛” 颁奖 我怎么覆盖派生类中的virtual成员函数?(up加分,详情请入内) 寻找用过JMAIL的同志! 想问一下,在收邮件时,如何取得发件人的MAIL呢? 请问像大虾们说的comp.lang.c++.moderated这样的讨论组怎么访问?(Solstice) 简单问题:关于paradox数据库 进销存的问题 高分寻找ZIP密码破解高手! 请问有没有能通过Modem发送传真的控件? >>>>树状层次关系的算法? 怎样检测机子里有没有我指定的字体,如果没有并安装,谢谢 如何动态配置站点??? seek 函数??? 谁能帮我破解些ZIP密码! DB高手请看看:逐级缩小搜索范围的一个问题,大家都来看看啦!!!!!! C# 完全手册 中文版电子书 神经网络 TADOConnect与SQLserver连接 WINS 几问 为什么BCB的自动弹出属性和方法提示速度那么慢? 请问那里能下载JBUILD6?????// 怎样用程序打开TADOConnection 的ConnectionString 设置窗体 键盘钩子?????,有实例或文档吗????? 低手问题? 大家碰到这样的问题吗? 各位,那里有d3d的教程? 从ca365下载了一个免费根证书(rootca.cer),却无法在本地计算机上安装,help! peihexian的程序发短信的一文中,程序所发的数据包 请问web service到底是个什么东西?谢谢 callingda(林丁) 来拿分30 哪位能提供一个图书管理的VB源码给我参考? yzqb()发工资了47分 请教一个问题,编译不通过,不知是什么错误。 帮帮忙!神经网络 vb 中打印机如何检测? 假如用户正在使用别的软件,如何自动使我的程序获得焦点 批量转移数据 SQL 斑竹呀急,快帮帮我! 想用ADO连接internet上服务器中的database,怎么动态建立间接网上数据库的DSN? 我的Web站点为什么没有安全性? 请问那些捌角人小图片如何做呀? 我也要一份《全套国标软件设计文档》 好人们,谁也发给我一个吧! 如何得到对话框在桌面的位置 紧急求救!编译时的错误! 改变Edit控件后出现字符重叠显现如何解决? 关于DBASE,CLIPPER,FOXPRO,VFP的历史发展 请问那些捌角图片如何做呀? 谁会刻光盘!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! lazywolf(二代) 有没有提供几何图形模板的类(如正方形和圆形)? typedef DWORD (WINAPI *MYFUNC)(DWORD,DWORD);是定义函数指针吗?为什么这样定义呢? 如何创建vector数组!我这些不对static Vector report[8]=new Vector()[8];高手指点me:) 如何画一个透明的Rectangle 一个容器可以装100克的水,装某种液体时,能装900克,密度是多少是液体的密度 烧杯的大小对倒扣在烧杯内的蜡烛燃烧时间的影响应控制哪些条件? 酸碱中和滴定试验中酸碱指示剂变色的时候HP不是7啊比如说甲基橙是PH在3.1-4.4变色.由此造成的试验误差有多大? 知道制冷量,怎样计算压缩机的功率 盛水的小烧杯放在盛水的大烧杯为什么大小杯里的水温度相同 iBoo炉温测试仪,为什么持续畅销? 热量计算和压缩机实际输出功率请问15度的水到0度水,0度水到0度的冰,0度冰到-10度的冰的热量换算公式,好象是CM(T1-T0),C值怎么取呢?还有压缩机的实际输出功率是额定功率x效率吗?我的压宿机 有一个瓶子内装有体积为50cm^3,密度为1.2×10^3千克/米^3的盐水,要将盐水稀释之密度为1.1×10^3千克/米^3,则应该加多少水急求 指示剂指示酸碱变色是化学变化吗?如果是,那么他是做反应物还是做其他成分?如果是反应物那酸碱走后,那他为什么又会变会原来的颜色?如果不是反应物那他是什么呢? 某酸碱指示剂的Pka=5.0,该指示剂呈现纯酸色的PH范围为____.A,4.5.0 B.4.6.0 C.6.0请说明理由。 6、将密度是0.9×103千克/米3、质量是2.7千克的物体,放进食盐水中,物体有1/4的体积露出液面.(1)食盐水的密度是多少千克/米3?(2)若将该物体放入水中,待它静止后露出水面的体积是多少米3? 酸碱等使指示剂变色是不是化学变化 某酸碱指示剂的PKa=5.0,该指示剂呈现纯酸色的PH范围为:A,4.0-5.0 B.4.0-6.0 C. 6、将密度是0.9×103千克/米3、质量是2.7千克的物体,放进食盐水中,物体有1/4的体积露出液面.求:(1) 的酸碱指示剂是什么 变色是化学变化吗 定量分析化学中 酸碱指示剂 变色点 PH=PKa(HIn)中 (HIn)是什么啊? 酸碱指示剂变色的口诀或者记忆方法甲基橙+酸=红,+碱=黄石蕊+酸=红,+碱=蓝酚酞+酸=无,+碱=红 酸碱指示剂变色是物理变化还是化学变化 紫叶甘蓝(一种紫色包心菜)的汁液,可以做酸碱指示剂吗? 1.某酸碱指示剂KA为3.0*10^(-5) 酸红碱蓝 由80%蓝变为80%红 需要PH减少多少?2.PKA的问题2.吡啶的PKA 5.19 咪唑7 异喹啉5.4 书上说碱性异喹啉大于吡啶大于咪唑 怎么排的 吡咯17.5 几乎不具有碱性 显脱 在存放过程中锡膏粘度变化百分之多少内算正常 把紫甘蓝(紫色洋白菜)捣烂,放入容器加入酒精浸泡.用纱布将浸泡出来的汁液过滤并挤出.“紫甘蓝指示剂”是什么颜色的?之后分别加入白醋、肥皂水、纯碱水、厕所清洁剂、油烟净.观察 以某吸附指示剂pka=2,作为银量法的指示剂,ph应控制在?为什么? 密度是0.6×103千克/米3,体积为100厘米3的木块,下面用绳子系于容器底部.如图如图 4所示.若向容器中注入水时,恰好使水面和木块表面相平,此时绳子受到的拉力为______牛. 紫甘蓝做酸碱指示剂的变色情况遇酸变什么颜色,遇碱变什么颜色,泡在酒精里半小时之后什么颜色回答前两个就可以,第三个暂时不用 谷轮压缩机型号怎样解读,最好举个例子,把每个字母和数字代表的意思分别解读?求行家! 圆柱形容器的底面积是200厘米2,容器中装有20厘米深的水,将密度为0.4×103千克/米3的木块投入水中静止后,桶底受到的压强增加了490帕.求:木块的质量和体积是多少 声速测定要求信号源与换能器固有频率一致在谐振情况下进行测量为什么 行波法中为什么选用斜线作为观测点 ph试纸是不是酸碱指示剂 蜂蜜有保质期吗?多长时间? 紫甘蓝为什么能做指示剂?紫甘蓝中含有的什么物质造成的?名称?反应原理?方程式?我知道现象,别再说了。 除了酸碱指示剂\PH试纸还有什么可以检测中和反应 高中化学二氧化碳溶于水可以使得指示剂变色吗碳酸酸性那么弱 一只空杯质量为30克,装满水后总质量为130克,装满某种液体后总质量为140克,求这种液体的密度. 有一木块重9.8n,放在水中有1/4体积露出水面,求木块的密度 高中化学二氧化碳溶于水可以使得指示剂变色 一个质量为50克的烧杯,装满水后质量为400克,若用它装满另一种液体后总质量为330克,则该液体密度多大 压缩机本身的功率与制冷量是怎么转换比如说压缩机的是3匹的 那么 他的制冷量是多少呢 还有他能冷却的空间有多大? 指示剂变色即停止滴定,浓度偏低,为什么浓度偏低? 一块重78克的物体放到一个装满水的容器中,溢出水的质量为7.8立方厘米,求物体的密度? 有一木块重9.8N,放在水中有1/4体积露出水面,则木板受到的浮力,体积,密度各为多少? 高中化学里涉及的指示剂变色的都有啥,像酚酞遇见碱变红这种! 水的密度是1克/立方厘米表示的意思是 A水的质量是1克 B水的体积是1立方厘米 C1立方厘米水的质量是1克D1一立方厘米水的密度是1克/立方厘米 压缩机制冷量怎么算是法国泰康压缩机恒温恒湿上用的 一个正方体木块漂浮在水面上水上部分与水下部分的体积之比为3:7,则这个木块的密度为多少kg /m^3 让紫甘蓝水变绿的物质是什么?A、橙子 B、西红柿 C、肥皂水 D、桃子 并联压缩机制冷量怎样计算? 浮在水面上的一正方体木块,若木块的水上部分体积是a,水下部分体积是b,则木块的密度为多少 为什么浸泡着紫甘蓝的酒精可用作酸碱指示剂?是什么原理?而且为什么经过水稀释后检验的颜色会变浅? 用天平和量杯测二十个鸡蛋如何计算平均密度 浮在水面上的一个正方体木块,若木块的水上部分为a,水下部分为b,则木块的密度为?今天就要好的加分啊! 145wF22冰箱压缩机用1P空调蒸发器代替可以吗?如果不行应该配多大的冷凝器和蒸发器? 用激光光电开关测量小球下落时间的方法测量液体粘滞系数有何优点 阿尔法锡膏和星马锡膏那个好? 一空瓶质量为100克,装满水后总质量200克,装满某种液体后总质量180克,求这种液体的密度 除了用酸碱指示剂,PH试纸外,还可用( )(填力法)检测中和反应是否发生是氢氧化钠溶液和稀盐酸反应 酸碱中和滴定指示剂一变色,就按溶液中H+等于OH-来计算吗? 一个空瓶的质量为100克,装满水后质量为1.1千克,改装满另一种液体后总质量为900克,求这种液体的密度? 除了用酸碱指示剂pH试纸外还可以使用什么检测中和反应是否发生在题目中一般说的蒸馏水是中性的还是偏酸性的 酸碱中和滴定的指示剂有哪些?他们不同ph时的颜色分别是什么?怎么决定用哪种指示剂?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn